B64 - Shortest Path with Restoration Editorial /

Time Limit: 3 sec / Memory Limit: 1024 MB

配点: 1000

問題文

頂点数 N、辺数 M の重み付き無向グラフが与えられます。 頂点 1 から頂点 N までの具体的な最短経路を 1 つ出力してください。 計算量は O(M \log N) であることが望ましいです。

制約

  • 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)
  • 与えられるグラフにおいて、頂点 1 と頂点 N は連結
  • 入力は全て整数

入力

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

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

出力

次の形式で答えを 1 行に出力してください。

v_1 v_2 \cdots v_k

(v_1,v_2,\ldots,v_k) は与えられたグラフにおける頂点 1 から頂点 N への最短経路になっていなければなりません。 形式的には、(v_1,v_2,\ldots,v_k) が満たすべき条件は以下のようになります。

  • v_1=1,v_k=N
  • 与えられたグラフには辺 (v_i,v_{i+1}) が存在する (1\leq i\lt k)
  • 上の 2 条件を満たすどのような (u_1,u_2,\ldots,u_l) に対しても、辺 (v_i,v_{i+1}) の長さの合計は辺 (u_i,u_{i+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

1 2 5 6

与えられたグラフでの頂点 1 から頂点 N への最短経路は次のようになります。


入力例 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

1 10 15