#AT1207. 乘车出行

乘车出行

题目描述

NN 个编号为 11NN 的城镇以及 MM 条道路。

ii条道路以双向形式连接城镇 AiA_i和城镇 BiB_i,并且长度为 CiC_i

高桥将乘车在这些城镇之间旅行,经过这些道路。他的汽车油箱最多能够容纳LL升的燃料,每行驶单位距离需要消耗升燃料。

在旅行时拜访一个城镇时,他可以加满油箱(或选择不加油)。不能在路途的一半发现油箱变空的情况下旅 行。

处理以下 Q 个查询: 油箱现在是满的。从城镇 sis_i 到城镇 tit_i 旅行时,找到他需要加满油箱的最少次数。如果无法到达城镇tit_i,输出 -1。

输入

第一行3个整数,表示N,M,LN,M,L

接下来一共MM行,表示Ai,Bi,CiA_i,B_i,C_i

接下来一个整数QQ,表示询问次数

接下来一共QQ行,每行两个整数si,tis_i,t_i,表示第ii组询问。

输出

ii行输出从城镇 sis_i 到城镇 tit_i 旅行时,加满油箱的最少次数。

如果无法到达城镇 tt;,输出 -1。

3 2 5
1 2 3
2 3 3
2
3 2
1 3
0
1

样例解释

从城镇 3 到城镇 2,可以利用第二条道路在不加满油箱的情况下到达城镇 2.

从城镇 1 到城镇 3,可以先利用第一条道路到达城镇 2,加满油箱,然后利用第二条道路到达城镇 3。

4 0 1
1
2 1
-1

样例解释

可能根本没有道路。

5 4 4
1 2 2
2 3 2
3 4 3
4 5 2
20
2 1
3 1
4 1
5 1
1 2
3 2
4 2
5 2
1 3
2 3
4 3
5 3
1 4
2 4
3 4
5 4
1 5
2 5
3 5
4 5
0
0
1
2
0
0
1
2
0
0
0
1
1
1
0
0
2
2
1
0

提示

  • 2 < = N < = 300 2\ <\ =\ N\ <\ =\ 300
  • 0 < = M < = N(N1)2 0\ <\ =\ M\ <\ =\ \frac{N(N-1)}{2}
  • 1  L  109 1\ \leq\ L\ \leq\ 10^9
  • 1 < = Ai, Bi < = N 1\ <\ =\ A_i,\ B_i\ <\ =\ N
  • Ai  Bi A_i\ \neq\ B_i
  • $ \left(A_i,\ B_i\right)\ \neq\ \left(A_j,\ B_j\right) $ ( i  j i\ \neq\ j )
  • $ \left(A_i,\ B_i\right)\ \neq\ \left(B_j,\ A_j\right) $ ( i  j i\ \neq\ j )
  • 1  Ci  109 1\ \leq\ C_i\ \leq\ 10^9
  • 1 < = Q < = N(N1) 1\ <\ =\ Q\ <\ =\ N\left(N-1\right)
  • 1 < = si, ti < = N 1\ <\ =\ s_i,\ t_i\ <\ =\ N
  • si  ti s_i\ \neq\ t_i
  • $ \left(s_i,\ t_i\right)\ \neq\ \left(s_j,\ t_j\right) $ ( i  j i\ \neq\ j )