Cạnh ghen tị
Đề bài
Mô tả
Cho đồ thị vô hướng liên thông có trọng số gồm đỉnh và cạnh, các cạnh được đánh số từ đến theo thứ tự xuất hiện trong dữ liệu vào. Cây khung nhỏ nhất của là một cây khung có tổng trọng số các cạnh nhỏ nhất có thể.
Khi chạy một thuật toán tìm cây khung nhỏ nhất, ta chỉ nhận được một cây khung, và những cạnh không được chọn sẽ "ghen tị" với những cạnh được chọn. Tuy nhiên có thể có rất nhiều cây khung nhỏ nhất khác nhau.
Cho truy vấn, truy vấn thứ là một tập gồm cạnh phân biệt của . Với mỗi truy vấn, hãy xác định xem có tồn tại một cây khung nhỏ nhất của chứa đồng thời tất cả các cạnh trong tập đó hay không.
Đồ thị có thể có nhiều cạnh nối cùng một cặp đỉnh, nhưng không có cạnh nối một đỉnh với chính nó.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và : số đỉnh và số cạnh của đồ thị.
- dòng tiếp theo, dòng thứ chứa ba số nguyên , , : cạnh thứ nối hai đỉnh , và có trọng số .
- Dòng tiếp theo chứa số nguyên : số truy vấn.
- dòng cuối, dòng thứ bắt đầu bằng số nguyên , tiếp theo là số nguyên phân biệt trong đoạn : chỉ số các cạnh thuộc truy vấn thứ .
Dữ liệu ra
Với mỗi truy vấn, in ra trên một dòng riêng chữ YES nếu tồn tại cây khung nhỏ nhất chứa tất cả các cạnh của truy vấn, ngược lại in ra NO.
Ràng buộc
- và
- ,
- và tổng của tất cả không vượt quá
- Đồ thị được đảm bảo liên thông
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 7 1 2 2 1 3 2 2 3 1 2 4 1 3 4 1 3 5 2 4 5 2 4 2 3 4 3 3 4 5 2 1 7 2 1 2 |
YES NO YES NO |
Cây khung nhỏ nhất có tổng trọng số . Truy vấn 1: cây khung gồm các cạnh là cây khung nhỏ nhất và chứa cả cạnh lẫn cạnh . Truy vấn 2: ba cạnh tạo thành chu trình nên không cây khung nào chứa được cả ba. Truy vấn 3: cạnh và cạnh cùng nằm trong một cây khung nhỏ nhất. Truy vấn 4: cạnh và cạnh đều có trọng số , nhưng không cây khung nhỏ nhất nào chứa được cả hai. |
| 3 2 1 2 3 2 3 6 3 1 1 1 2 2 1 2 |
YES YES YES |
Đồ thị đã là một cây nên nó có đúng một cây khung, và cây khung đó chứa mọi cạnh. Mọi truy vấn đều cho kết quả YES. |
Bình luận