100 atcoder#ARC061C. [ARC061E] すぬけ君の地下鉄旅行

[ARC061E] すぬけ君の地下鉄旅行

配点 : 600600

問題文

すぬけ君の住んでいる街には地下鉄が走っています。駅は全部で NN 個あり、路線は全部で MM 本あります。 駅には 11 から NN までの整数が付けられています。また、それぞれの路線はある 11 つの会社によって運営されており、 それぞれの会社には会社をあらわす整数がつけられています。

ii 番目 ( 1iM1 \leq i \leq M ) の路線は、駅 pip_i と 駅 qiq_i を相互に結んでいます。途中に他の駅はありません。 また、この路線は会社 cic_i によって運営されています。 同じ駅を通る路線が複数あるときは、その駅で乗り換えることができます。

それぞれの会社について、同じ会社の路線を使い続ける限り料金は 11 ですが、別の会社の路線に乗り換えるたびに新たに料金が 11 かかります。 ある会社を利用し、別の会社を利用してからまた最初の会社を利用する場合でも、再び料金を払う必要があります。

すぬけ君は、駅 11 を出発し、地下鉄を利用して駅 NN に行きたいです。移動にかかる料金の最小値を求めてください。

制約

  • 2N1052 \leq N \leq 10^5
  • 0M2×1050 \leq M \leq 2 \times 10^5
  • 1piN1 \leq p_i \leq N (1iM)(1 \leq i \leq M)
  • 1qiN1 \leq q_i \leq N (1iM)(1 \leq i \leq M)
  • 1ci1061 \leq c_i \leq 10^6 (1iM)(1 \leq i \leq M)
  • piqip_i \neq q_i (1iM)(1 \leq i \leq M)

入力

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

NN MM

p1p_1 q1q_1 c1c_1

:

pMp_M qMq_M cMc_M

出力

移動にかかる料金の最小値を出力せよ。すぬけ君が駅 NN に到達することが不可能な場合には、代わりに -1 を出力せよ。

3 3
1 2 1
2 3 1
3 1 2
1

112233 と会社 11 の路線を使って移動することができ、この場合必要なコストは 11 です。

8 11
1 3 1
1 4 2
2 3 1
2 5 1
3 4 3
3 6 3
3 7 3
4 8 4
5 6 1
6 7 5
7 8 5
2

1133225566 と会社 11 の路線を利用し、その後 667788 と会社 55 の路線を利用することで、コスト 22 で目的地に到達できます。

2 0
-1