#G00003. Đường đi ngắn nhất (Dijkstra?)
Đườ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 đỉnh, được đánh số từ đến .
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 đến đỉnh .
Đồ 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 và , lần lượt là số đỉnh và số cạnh của đồ thị.
Trong dòng tiếp theo, dòng thứ chứa ba số nguyên , và , mô tả một cạnh vô hướng nối hai đỉnh và có trọng số .
Output
Nếu không tồn tại đường đi từ đỉnh đến đỉnh , 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 đến đỉnh .
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%: ; ; ; .
- Subtask 2 — 30%: ; ; ; .
- Subtask 3 — 20%: ; ; ; .
- Subtask 4 — 35%: ; ; ; .
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
.
Ba cạnh tương ứng có trọng số lần lượt là , và , nên tổng độ dài của đường đi bằng
.
Chẳng hạn, đường đi có tổng trọng số , còn đường đi có tổng trọng số .
Vì vậy, đường đi được in trong Output có tổng trọng số nhỏ nhất bằng .