#ABC143E. Travel by Car

Travel by Car

题目描述

There are NN towns numbered 11 to NN and MM roads. The ii-th road connects Town AiA_i and Town BiB_i bidirectionally and has a length of CiC_i.

Takahashi will travel between these towns by car, passing through these roads. The fuel tank of his car can contain at most LL liters of fuel, and one liter of fuel is consumed for each unit distance traveled. When visiting a town while traveling, he can full the tank (or choose not to do so). Travel that results in the tank becoming empty halfway on the road cannot be done.

Process the following QQ queries:

  • The tank is now full. Find the minimum number of times he needs to full his tank while traveling from Town sis_i to Town tit_i. If Town tit_i is unreachable, print 1-1.

有编号为 11NNNN 个镇和 MM 条公路。 ii (条)公路双向连接 AiA_i 镇和 BiB_i 镇,长度为 CiC_i

高桥将开车往返于这些城镇之间,途经这些道路。他的汽车油箱最多可装 LL 升燃料,每行驶一个单位距离消耗一升燃料。在旅行途中到达一个城镇时,他可以将油箱加满(也可以选择不加满)。如果半路上油箱变空,则无法行驶。

处理下列 QQ 查询:

  • 油箱现在是满的。求从城镇 sis_i 到城镇 tit_i 的路程中,他需要加满油箱的最少次数。如果城镇 tit_i 无法到达,则打印 1-1

输入格式

输入内容按以下格式标准输入:

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 行应包含从城镇 sis_i 到城镇 tit_i 途中油箱需要加满的最少次数。如果城镇 tit_i 无法到达,则该行应包含 1-1

样例 #1

样例输入 #1

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

样例输出 #1

0
1

样例 #2

样例输入 #2

4 0 1
1
2 1

样例输出 #2

-1

样例 #3

样例输入 #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

说明

数据规模与约定

  • 输入值均为整数
  • 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)\left(A_i, B_i\right) \neq \left(A_j, B_j\right) (如果 iji \neq j )
  • (Ai,Bi)(Bj,Aj)\left(A_i, B_i\right) \neq \left(B_j, A_j\right) (如果 iji \neq j )
  • 1Ci1091 \leq C_i \leq 10^9
  • 1QN(N1)1 \leq Q \leq N\left(N-1\right)
  • 1si,tiN1 \leq s_i, t_i \leq N
  • sitis_i \neq t_i
  • (si,ti)(sj,tj)\left(s_i, t_i\right) \neq \left(s_j, t_j\right) (如果 iji \neq j )

样例 11 解释

从城镇 33 到城镇 22 ,我们可以使用第二条路到达城镇 22 ,途中无需给油箱加油。

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

样例 22 解释

可能根本没有路