奶牛篱笆
时间限制:1秒 内存限制:256M
【问题描述】
FJ想让奶牛们准备乡村跳绳比赛,所以贝茜和一群奶牛都在准备跳过篱笆。因为它们都太累了,它们都想用尽量少的能量去跳过尽量高的篱笆。显然,跳过几个矮篱笆对奶牛来说并不困难,但跳过一个高的篱笆还是有压力的。因此,奶牛们只关心高度在它们能跳过最高的篱笆以下的篱笆。
奶牛们的练习房有 \(N\) 个位置,方便起见,我们用 \(1..N\) 来标记。一个有 \(M\) 个元素的集合,表示连接一对位置的单向道路,也被标记为 \(1..M\)。道路 \(i\) 从位置 \(S_i\) 到位置 \(E_i\) 并且包含一个篱笆高度 \(H_i\)。奶牛们在它们经过的路上必须跳过篱笆。
奶牛有 \(T\) 个任务要完成。任务 \(i\) 包含两个不同的数 \(A_i\) 和 \(B_i(1 ≤ A_i,B_i ≤ N)\),表示一头奶牛必须从位置 \(A_i\) 到位置 \(B_i\) (通过穿过一条或多条路)。奶牛们当它们从 \(A_i\) 到 \(B_i\) 时,想走一条跳过的最高的篱笆最小的路。你的任务是写一个程序计算出这个最小的高度。
【输入格式】
第一行:三个用空格隔开的整数:\(N\),\(M\) 和 \(T\)。
第二行至第 \(M+1\) 行:第 \(i+1\) 行包含三个用空格隔开的整数:\(S_i,E_i\) 和 \(H_i\)。
第 \(M+2\) 行至第 \(M+T+1\)行:第 \(i+M+1\) 行包含两个用空格隔开的用来描述任务 \(i\) 的整数 \(A_i\)和 \(B_i\)。
【输出格式】
第一行至第 \(T\) 行:第 \(i\) 行包含任务 \(i\) 的结果,要求输出满足条件的最小高度.如果在两个位置中不可能满足条件则输出 -1。
【输入输出样例】
Input
5 6 3
1 2 12
3 2 8
1 3 5
2 5 3
3 4 4
2 4 8
3 4
1 2
5 1
Output
4
8
-1
【数据说明】
对于 \(100\%\) 的数据 \(1≤N≤500\),\(1≤m≤25000\),\(1≤T≤40000\),边权不超过 \(10^6\)。
【来源】
Mr.he