2881 - 忍者神龟

题目描述

在一个充满危险的城市地图上,忍者神龟们为了证明自己的实力,接受了导师的挑战。

城市中有 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
说明

样例 1 说明

一张有 5 个点 6 条边的有向图中,有 3 个询问。

1 个询问,询问从点 1 到点 3 的路径,这样的路径有 2 条,分别是 1-2-31-3。第 1 条路径上战斗力最强的敌人的战斗力为 30,第 2 条路径上战斗力最强的敌人的战斗力为 20,因此选择第 2 条路径,输出 20

对于第 2 个、第 3 个询问,使用同样的方法分析,可以得到路径上最强敌人的战斗力最小分别为 3535

对于第 4 个询问,无法从编号为 5 的点,走到编号为 3 的点,因此输出 -1

数据范围

对于 20\% 的数据,满足 1 \leq N \leq 501 \leq M \leq 1001 \leq Q \leq 100

对于 100\% 的数据,满足 1 \leq N \leq 3001 \leq M \leq 25,0001 \leq P_i \leq 1,000,0001 \leq Q \leq 40,0001 \leq S_i, E_i \leq N

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 0
通过人数 0
金币数量 1 枚
难度 入门


上一题 下一题