atcoder#ABC192E. [ABC192E] Train

[ABC192E] Train

配点 : 500500

問題文

AtCoder国には 11 から NN の番号がついた NN 個の都市と、11 から MM の番号がついた MM 本の鉄道があります。

鉄道 ii は都市 AiA_i と都市 BiB_i の間を結んでおり、時刻が KiK_i の倍数になる毎に、双方の都市からそれぞれ他方の都市への列車が発車します。この列車は出発から到着までに TiT_i の時間がかかります。

あなたはいま都市 XX にいます。時刻 00 またはそれ以降に都市 XX を発車する列車に乗って移動を開始するとき、都市 YY には最速でいつたどり着けるか求めてください。都市 YY にたどり着くことが出来ない場合はそのことを報告してください。 ただし、乗り換えにかかる時間は無視できるため、どの都市においても、あなたの乗っている列車の到着時刻と同時に発車する別の列車に乗り換えることが可能であるとします。

制約

  • 2N1052 \leq N \leq 10^5
  • 0M1050 \leq M \leq 10^5
  • 1X,YN1 \leq X,Y \leq N
  • XYX \neq Y
  • 1Ai,BiN1 \leq A_i,B_i \leq N
  • AiBiA_i \neq B_i
  • 1Ti1091 \leq T_i \leq 10^9
  • 1Ki1091 \leq K_i \leq 10^9
  • 入力は全て整数

入力

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

NN MM XX YY

A1A_1 B1B_1 T1T_1 K1K_1

\vdots

AMA_M BMB_M TMT_M KMK_M

出力

都市 YY にたどり着くことができる最も早い時刻を出力せよ。ただし、都市 YY にたどり着くことが出来ない場合はかわりに -1 と出力せよ。

3 2 1 3
1 2 2 3
2 3 3 4
7

まず、時刻 00 に鉄道 11 に乗って、都市 11 から都市 22 へ移動します。都市 22 には時刻 22 に到着します。

その後、時刻 44 に鉄道 22 に乗って、都市 22 から都市 33 へ移動します。都市 33 には時刻 77 に到着します。

これより早く都市 33 に着く方法はありません。

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

まず、時刻 00 に鉄道 22 に乗って、都市 33 から都市 22 へ移動します。都市 22 には時刻 33 に到着します。

その後、時刻 33 に鉄道 11 に乗って、都市 22 から都市 11 へ移動します。都市 11 には時刻 55 に到着します。

3 0 3 1
-1
9 14 6 7
3 1 4 1
5 9 2 6
5 3 5 8
9 7 9 3
2 3 8 4
6 2 6 4
3 8 3 2
7 9 5 2
8 4 1 9
7 1 6 9
3 9 9 3
7 5 1 5
8 2 9 7
4 9 4 4
26