在一个充满危险的城市地图上,忍者神龟们为了证明自己的实力,接受了导师的挑战。
城市中有 N 个地点,地点之间有 M 条单向道路,每条道路上都有一个强大的敌人守护。第 i 条道路上敌人的战斗力为 P_i。
现在有 Q 个挑战任务,每个任务要求一只神龟从某个地点 S_i 出发,到达目标地点 E_i。神龟们希望找到一条能到达目标地点的路径,并且在所有可行路径中,遇到的战斗力最强的敌人尽可能弱。
你的任务是帮助神龟们计算出,每个任务中所有可行路径上遇到的最强敌人的最小战斗力。如果无法到达目标地点,输出 -1。
第 1 行,读入三个整数 N, M, Q,分别表示地点数、道路数和任务数。
接下来 M 行,每行包含三个整数 U_i, V_i, P_i,表示从地点 U_i 到地点 V_i 的一条单向道路,以及这条道路上敌人的战斗力 P_i。
接下来 Q 行:每行包含两个整数 S_i, E_i,表示第 i 个挑战任务的起点和终点。
对于每个挑战任务,输出一个整数,表示该任务中所有可行路径上战斗力最强的敌人的最小值。如果无法从 S_i 到达 E_i,输出 -1。
5 6 4 1 2 10 1 3 20 2 3 30 3 4 35 4 5 20 3 5 50 1 3 3 5 1 5 5 3
20 35 35 -1
5 15 15 1 3 622809 1 5 229876 5 2 442313 2 5 727278 1 4 977609 4 2 227894 3 5 903365 3 4 68582 4 1 72258 3 2 335607 4 5 140864 3 1 469688 1 2 161242 4 3 12301 2 3 52120 5 1 2 3 4 1 3 4 2 1 1 2 5 2 5 3 1 5 4 2 3 2 3 1 1 4 3 5 4 3
442313 52120 72258 68582 72258 161242 442313 442313 161242 161242 161242 72258 161242 140864 12301
20 30 15 6 5 6 8 6 16 19 9 47 20 15 28 1 9 31 20 14 27 17 12 13 17 1 42 15 6 43 10 5 41 20 16 35 18 6 23 18 5 10 13 20 23 8 19 47 4 16 3 12 11 1 13 18 43 7 12 4 17 18 44 17 19 24 15 5 43 9 1 24 20 6 18 19 7 45 13 10 40 15 14 34 19 1 37 17 6 6 11 17 17 15 4 5 16 7 12 20 2 15 6 2 10 5 13 13 17 13 3 12 17 20 8 18 11 18 13 10 5 14 6
-1 -1 4 -1 43 -1 -1 -1 -1 17 -1 -1 -1 41 -1
一张有 5 个点 6 条边的有向图中,有 3 个询问。
第 1 个询问,询问从点 1 到点 3 的路径,这样的路径有 2 条,分别是 1-2-3 和 1-3。第 1 条路径上战斗力最强的敌人的战斗力为 30,第 2 条路径上战斗力最强的敌人的战斗力为 20,因此选择第 2 条路径,输出 20。
对于第 2 个、第 3 个询问,使用同样的方法分析,可以得到路径上最强敌人的战斗力最小分别为 35 和 35。
对于第 4 个询问,无法从编号为 5 的点,走到编号为 3 的点,因此输出 -1。
对于 20\% 的数据,满足 1 \leq N \leq 50,1 \leq M \leq 100,1 \leq Q \leq 100。
对于 100\% 的数据,满足 1 \leq N \leq 300,1 \leq M \leq 25,000,1 \leq P_i \leq 1,000,000,1 \leq Q \leq 40,000,1 \leq S_i, E_i \leq N。