Time limit: 5.0s , Memory limit: 256M , Points: 1
Cho cây gồm
đỉnh, các đỉnh được đánh số từ
đến
và các cạnh được đánh số từ
đến
. Cạnh thứ
của cây nối hai đỉnh
và
với trọng số
. Mỗi đỉnh
của cây đều được gán một trọng số
.
Hàm được định nghĩa là độ dài đường đi ngắn nhất giữa hai đỉnh
và
trên cây.
Hàm được định nghĩa như sau:
Xét đơn đồ thị bao gồm
đỉnh và
cạnh, giữa hai đỉnh
và
của đồ thị
có trọng số
. Bạn hãy tìm độ dài cây khung nhỏ nhất của
.
Input
- Dòng đầu tiên chứa số nguyên
.
- Dòng thứ hai chứa
số nguyên
.
dòng tiếp theo, dòng thứ
chứa ba số nguyên
và
mô tả cạnh thứ
của cây
.
- Dữ liệu đảm bảo các cạnh đã cho tạo thành một cây hợp lệ.
Output
- In ra độ dài cây khung nhỏ nhất của đồ thị
.
Examples
Sample Input 1
4
1 3 5 1
4 3 3
1 2 1
3 2 2
Sample Output 1
22
Sample Input 2
6
44 23 31 29 32 15
4 5 8
2 1 10
6 4 15
3 1 12
1 4 16
Sample Output 2
359
Notes
Trong ví dụ đầu tiên, các giá trị như sau:
Comments
comment này spoil thuật: sử dụng thuật prim và dựng cây centroid để update và truy vấn khoảng cách (hàm f())