#G00003. Đường đi ngắn nhất (Dijkstra?)

    ID: 17 Loại: Thông thường 1000~4000ms 256MiB Tried: 5 Đã chấp nhận: 2 Độ khó: 3 Đăng bởi: Nhãn>Shortest PathsDijkstraShortest path reconstructionGraph BasicsWeighted graphsData StructuresPriority queueHeapAdvanced TechniquesOptimization techniques

Đường đi ngắn nhất (Dijkstra?)

Đường đi ngắn nhất

Nguồn: Codeforces

Phiên bản: Phước Hưng OJ Extended

Đề bài

Cho một đồ thị vô hướng có trọng số gồm nn đỉnh, được đánh số từ 11 đến nn.

Mỗi cạnh nối hai đỉnh và có một trọng số nguyên dương biểu thị độ dài của cạnh đó.

Hãy tìm một đường đi có tổng trọng số nhỏ nhất từ đỉnh 11 đến đỉnh nn.

Đồ thị có thể chứa khuyên và có thể có nhiều cạnh nối cùng một cặp đỉnh.

Input

Dòng đầu tiên chứa hai số nguyên nn và mm, lần lượt là số đỉnh và số cạnh của đồ thị.

Trong mm dòng tiếp theo, dòng thứ ii chứa ba số nguyên aia_i, bib_i và wiw_i, mô tả một cạnh vô hướng nối hai đỉnh aia_i và bib_i có trọng số wiw_i.

Output

Nếu không tồn tại đường đi từ đỉnh 11 đến đỉnh nn, in ra duy nhất số -1.

Ngược lại, in lần lượt các đỉnh của một đường đi ngắn nhất từ đỉnh 11 đến đỉnh nn.

Nếu tồn tại nhiều đường đi ngắn nhất, có thể in ra bất kỳ một đường đi nào trong số đó.

Subtask

  • Subtask 1 — 15%: 2≤n≤40002 \le n \le 4000; 0≤m≤2⋅1040 \le m \le 2\cdot10^4; 1≤ai,bi≤n1 \le a_i,b_i \le n; 1≤wi≤1091 \le w_i \le 10^9.
  • Subtask 2 — 30%: 2≤n≤2⋅1052 \le n \le 2\cdot10^5; 0≤m≤3⋅1050 \le m \le 3\cdot10^5; 1≤ai,bi≤n1 \le a_i,b_i \le n; 1≤wi≤1091 \le w_i \le 10^9.
  • Subtask 3 — 20%: 2≤n≤1062 \le n \le 10^6; 0≤m≤2⋅1060 \le m \le 2\cdot10^6; 1≤ai,bi≤n1 \le a_i,b_i \le n; 1≤wi≤201 \le w_i \le 20.
  • Subtask 4 — 35%: 2≤n≤1062 \le n \le 10^6; 0≤m≤2⋅1060 \le m \le 2\cdot10^6; 1≤ai,bi≤n1 \le a_i,b_i \le n; 1≤wi≤1091 \le w_i \le 10^9.

Ví dụ

Ví dụ 1

Input

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

Output

1 4 3 5

Giải thích

Đường đi được in ra lần lượt đi qua các đỉnh

1→4→3→51 \rightarrow 4 \rightarrow 3 \rightarrow 5.

Ba cạnh tương ứng có trọng số lần lượt là 11, 33 và 11, nên tổng độ dài của đường đi bằng

1+3+1=51+3+1=5.

Chẳng hạn, đường đi 1→2→51\rightarrow2\rightarrow5 có tổng trọng số 2+5=72+5=7, còn đường đi 1→2→3→51\rightarrow2\rightarrow3\rightarrow5 có tổng trọng số 2+4+1=72+4+1=7.

Vì vậy, đường đi được in trong Output có tổng trọng số nhỏ nhất bằng 55.