#ABC143E. [ABC143E] Travel by Car

[ABC143E] Travel by Car

题目描述

1 1 から N N までの番号がついた N N 個の町と M M 本の道があります。i i 本目の道は町 Ai A_i と町 Bi B_i を双方向に結び、その長さは Ci C_i です。

高橋君はこれらの町の間を、道を車で通行することで移動します。車の燃料タンクの容量は L L リットルであり、距離 1 1 を移動する度に燃料を 1 1 リットル消費します。移動中に町を訪れた場合、燃料をタンクが一杯になるまで補給することが出来ます (補給しないという選択も可能です)。道の途中で燃料が尽きるような移動は出来ません。

以下の Q Q 個のクエリに答えてください。

  • はじめ、車の燃料タンクは一杯です。町 si s_i から町 ti t_i へ移動するとき、最小で何回途中で燃料を補給する必要があるかを答えてください。町 ti t_i まで移動出来ない場合は 1 −1 を出力してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M L L A1 A_1 B1 B_1 C1 C_1 : : AM A_M BM B_M CM C_M Q Q s1 s_1 t1 t_1 : : sQ s_Q tQ t_Q

输出格式

Q Q 行出力せよ。

i i 行目には、町 si s_i から町 ti t_i へ移動するとき、最小で何回燃料を補給する必要があるかを出力せよ。町 ti t_i まで移動出来ない場合は 1 −1 を出力せよ。

题目大意

nn 个小镇,mm 条双向道路。第 ii 条道路从 aia_i 通向 bib_i,长度为 cic_i。车的油箱容量为 LL,当行驶到一个镇上时可以选择加满油或者什么都不做。行驶单位长度的距离消耗一单位的油。

现在回答 QQ 个问题:

  • 油箱现在为满,从 sis_itit_i,最少需要加油多少次,或者输出无解。

2n3002\le n\le 3000mn(n1)/20\le m\le n(n - 1)/2,无重边,无自环。1ci,L1091\le c_i, L\le 10^9

3 2 5
1 2 3
2 3 3
2
3 2
1 3
0
1
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 のとき)

Sample Explanation 1

3 3 から町 2 2 へ移動するときは、 2 2 本目の道を使えば、途中で燃料を補給することなく町 2 2 へ到着することが出来ます。 町 1 1 から町 3 3 へ移動するときは、まず 1 1 本目の道を使って町 2 2 へ移動し、燃料をタンク一杯まで補給し、 2 2 本目の道を使うことにより、町 3 3 へ到着することが出来ます。

Sample Explanation 2

道が無いこともあります。