Time limit: 1.0s , Memory limit: 256M , Points: 0 (partial)
Cho đồ thị gồm đỉnh, ban đầu đồ thị không có cạnh nối. Thực hiện
thao tác trên đồ thị như sau:
- Thao tác thứ
(
) gồm ba số nguyên
,
và
(
) : Với mỗi cặp đỉnh
thỏa mãn
, thêm cạnh nối giữa hai đỉnh
và
với độ dài
.
Hỏi sau khi thực hiện tất cả thao tác, độ dài đường đi ngắn nhất từ đỉnh
đến đỉnh
là bao nhiêu ?
Lưu ý rằng đồ thị sau khi thực hiện các thao tác có thể là đa đồ thị.
Input
- Dòng đầu tiên chứa hai số nguyên
và
là số đỉnh và số thao tác (
,
).
dòng tiếp theo, dòng thứ
chứa ba số nguyên
,
và
mô tả thao tác thứ
(
,
).
Output
- In ra độ dài đường đi ngắn nhất từ đỉnh
đến đỉnh
sau khi thực hiện tất cả các thao tác. Nếu không có đường đi từ đỉnh
đến đỉnh
, in ra
.
Examples
Sample Input 1
4 2
1 3 2
3 4 5
Sample Output 1
7
Sample Input 2
4 2
1 2 2
3 4 1
Sample Output 2
-1
Scoring
- Subtask
với
số điểm:
- Subtask
với
số điểm:
,
với mọi
- Subtask
với
số điểm:
- Subtask
với
số điểm: Không có ràng buộc gì thêm
Notes
- Ở ví dụ đầu tiên, sau khi thực hiện tất cả các thao tác, đồ thị được xây dựng như sau:

- Ở ví dụ thứ hai, không tồn tại đường đi từ đỉnh
đến đỉnh
trong đồ thị sau:

Comments