atcoder#ABC143E. [ABC143E] Travel by Car

[ABC143E] Travel by Car

配点 : 500500

問題文

11 から NN までの番号がついた NN 個の町と MM 本の道があります。ii 本目の道は町 AiA_i と町 BiB_i を双方向に結び、その長さは CiC_i です。

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

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

  • はじめ、車の燃料タンクは一杯です。町 sis_i から町 tit_i へ移動するとき、最小で何回途中で燃料を補給する必要があるかを答えてください。町 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)\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 のとき)

入力

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

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 を出力せよ。

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

33 から町 22 へ移動するときは、 22 本目の道を使えば、途中で燃料を補給することなく町 22 へ到着することが出来ます。

11 から町 33 へ移動するときは、まず 11 本目の道を使って町 22 へ移動し、燃料をタンク一杯まで補給し、 22 本目の道を使うことにより、町 33 へ到着することが出来ます。

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