Kết nối các trường đại học
Đề bài
Mô tả
Có thành phố được nối với nhau bởi con đường hai chiều, sao cho từ một thành phố bất kỳ đều có thể đi tới mọi thành phố khác. Mỗi con đường có độ dài bằng , nên khoảng cách giữa hai thành phố là số con đường trên đường đi ngắn nhất giữa chúng.
Trong số các thành phố này có thành phố chứa trường đại học, mỗi trường nằm ở một thành phố khác nhau.
Cần chia trường đại học thành cặp, mỗi trường thuộc đúng một cặp, rồi nối hai trường trong mỗi cặp bằng một sợi cáp có độ dài bằng khoảng cách giữa hai thành phố tương ứng.
Hãy tìm tổng độ dài cáp lớn nhất có thể đạt được.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và , số thành phố và số cặp trường đại học.
- Dòng thứ hai chứa số nguyên phân biệt , chỉ số các thành phố có trường đại học.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và , cho biết có con đường nối thành phố và thành phố .
Dữ liệu ra
In ra một số nguyên duy nhất: tổng khoảng cách lớn nhất khi chia trường đại học thành cặp.
Ràng buộc
- , các đôi một khác nhau
- Các con đường tạo thành một cây (đồ thị liên thông, không có chu trình)
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 7 2 1 5 6 2 1 3 3 2 4 5 3 7 4 3 4 6 |
6 | Ghép cặp và . Khoảng cách từ tới là (đường ), khoảng cách từ tới là (đường ), tổng bằng . Không có cách ghép nào cho tổng lớn hơn. |
| 9 3 3 2 1 6 5 9 8 9 3 2 2 7 3 4 7 6 4 5 2 1 2 8 |
9 | Một cách ghép tối ưu là , và với các khoảng cách lần lượt là , , . |
Bình luận