#abc143e. [abc143_e]Travel by Car

[abc143_e]Travel by Car

问题描述

NN 个编号从 11NN 的城镇和 MM 条道路。第 ii 条道路双向连接 Town AiA_i 和 Town BiB_i,长度为 CiC_i

高橋将开车在这些城镇之间旅行,经过这些道路。他的汽车油箱最多可以容纳 LL 升燃料,每行驶单位距离消耗一升燃料。在旅途中访问一个城镇时,他可以加满油箱(或者选择不加)。不能在路途中油箱用尽的情况下旅行。

处理以下 QQ 个查询:

  • 油箱现在是满的。找出他从 Town sis_i 到 Town tit_i 旅行的最少加油次数。如果无法到达 Town tit_i,打印 \-1\-1

约束条件

  • 输入中的所有值均为整数。
  • 2N3002 \leq N \leq 300
  • 0MN(N1)20 \leq M \leq \frac{N(N-1)}{2}
  • 1L1091 \leq L \leq 10^9
  • 1Ai,BiN1 \leq A_i, B_i \leq N
  • AiBiA_i \neq B_i
  • (Ai,Bi)(Aj,Bj)(A_i, B_i) \neq (A_j, B_j)(如果 iji \neq j
  • (Ai,Bi)(Bj,Aj)(A_i, B_i) \neq (B_j, A_j)(如果 iji \neq j
  • 1Ci1091 \leq C_i \leq 10^9
  • 1QN(N1)1 \leq Q \leq N(N-1)
  • 1si,tiN1 \leq s_i, t_i \leq N
  • sitis_i \neq t_i
  • (si,ti)(sj,tj)(s_i, t_i) \neq (s_j, t_j)(如果 iji \neq j

输入

输入以以下格式从标准输入读入:

NN MM LL A1A_1 B1B_1 C1C_1 :: AMA_M BMB_M CMC_M QQ s1s_1 t1t_1 :: sQs_Q tQt_Q

输出

输出 QQ 行。

ii 行应包含从 Town sis_i 到 Town tit_i 旅行中需要加满油箱的最少次数。如果无法到达 Town tit_i,该行应包含 \-1\-1


示例输入 1

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

示例输出 1

0
1

从 Town 33 到 Town 22 的旅行,我们可以使用第二条道路在不加油的情况下到达 Town 22

从 Town 11 到 Town 33 的旅行,我们可以先使用第一条道路到达 Town 22,加满油箱,然后使用第二条道路到达 Town 33


示例输入 2

4 0 1
1
2 1

示例输出 2

-1

可能根本没有道路。


示例输入 3

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

示例输出 3

0
0
1
2
0
0
1
2
0
0
0
1
1
1
0
0
2
2
1
0