A64 - Shortest Path 2 解説 /

実行時間制限: 3 sec / メモリ制限: 1024 MB

配点: 1000

問題文

重み付き無向グラフに対する最短経路問題を解いてください。 具体的には、以下のようなグラフが与えられるとき、頂点 1 から各頂点までの最短経路長を求めてください。

  • 頂点数は N 、辺数は M である
  • i 番目の辺は頂点 A_i と頂点 B_i を結び、長さは C_i である

なお、以降の説明では、頂点 1 から頂点 k までの最短経路長を \operatorname{dist}[k] とします。

制約

  • 2 \leq N \leq 100000
  • 1 \leq M \leq \min(100000,N(N-1)/2)
  • 1 \leq A_i \lt B_i \leq N\ (1\leq i\leq M)
  • 1 \leq C_i \leq 10000\ (1\leq i\leq M)
  • i \neq j \implies (A_i,B_i) \neq (A_j,B_j)
  • 入力は全て整数

入力

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

N M
A_1 B_1 C_1
A_2 B_2 C_2
\vdots
A_M B_M C_M

出力

k 行目には \operatorname{dist}[k] の値を出力してください。 ただし、頂点 k まで移動できない場合は代わりに -1 と出力してください。


入力例 1

6 7
1 2 15
1 4 20
2 3 65
2 5 4
3 6 50
4 5 30
5 6 8

出力例 1

0
15
77
20
19
27

与えられるグラフは次のようになります。


入力例 2

15 30
10 11 23
11 13 24
5 8 22
10 15 18
12 14 15
2 10 11
4 7 15
5 7 15
7 9 8
8 12 1
5 14 1
10 14 17
10 12 11
8 10 6
7 14 28
6 9 1
1 10 19
4 5 4
9 10 21
7 10 21
4 10 29
5 10 8
4 14 8
11 12 24
10 13 13
3 10 1
5 12 24
2 15 23
6 10 18
6 15 25

出力例 2

0
30
20
31
27
37
40
25
38
19
42
26
32
28
37