LG#P1967. [NOIP 2013 提高组] 货车运输

提交4 通过1
通过率25%
时间限制2000ms
内存限制512MiB
    ID: 12140 传统题 2000ms 512MiB 尝试: 4 已通过: 1 难度: 提高 上传者: 标签>GESPGESP强化C++c++编程题最小生成树最大生成树倍增查询

题目描述

题目描述

A 国共有 nn 座城市,编号为 11nn。城市之间有 mm 条双向道路,每条道路都规定了允许车辆通过的最大重量,称为这条道路的限重。两座城市之间可能有多条道路,整个道路网也不一定全部连通。

现在有 qq 辆货车需要分别完成运输任务。对于一辆从城市 xx 前往城市 yy 的货车,它可以自行选择行驶路线,但货物重量不能超过路线中任何一条道路的限重。因此,一条路线能够承受的最大货物重量,由这条路线中限重最小的道路决定。

每位司机都希望在能够到达目的地的前提下尽量多运货。请对每个运输任务计算:在所有从 xxyy 的可行路线中,货车最多可以运输多重的货物。如果两座城市之间根本不存在通路,需要报告无法到达。

输入格式

第一行包含两个整数 n,mn,m,分别表示城市数量和双向道路数量。

接下来 mm 行,每行包含三个整数 x,y,zx,y,z,表示城市 xx 与城市 yy 之间有一条限重为 zz 的双向道路。保证 xyx\ne y,两座城市之间可能有多条道路。

随后一行包含整数 qq,表示运输任务数量。

接下来 qq 行,每行包含两个不同的整数 x,yx,y,表示一辆货车需要从城市 xx 运货到城市 yy

输出格式

对每个运输任务输出一行。如果能够到达,输出该货车在最优路线下可以运输的最大货物重量;如果不能到达,输出 1-1

数据范围与约定

对于 30%30\% 的数据,1n<10001\le n<10001m<1041\le m<10^41q<10001\le q<1000

对于 60%60\% 的数据,1n<10001\le n<10001m<5×1041\le m<5\times 10^41q<10001\le q<1000

对于全部数据,1n<1041\le n<10^41m<5×1041\le m<5\times 10^41q<3×1041\le q<3\times 10^40z1050\le z\le 10^5

可见测试数据

输入数据 1

4 3
1 2 4
2 3 3
3 1 1
3
1 3
1 4
1 3

输出数据 1

3
-1
3

输入数据 2

2 1
1 2 7
1
1 2

输出数据 2

7

输入数据 3

4 2
1 2 5
3 4 6
3
1 2
1 3
3 4

输出数据 3

5
-1
6