Tập cạnh tốt
Đề bài
Mô tả
Cho một đồ thị vô hướng liên thông gồm đỉnh và cạnh. Đồ thị có thể có nhiều cạnh nối cùng một cặp đỉnh (cạnh bội), nhưng không có khuyên (cạnh nối một đỉnh với chính nó).
Mỗi đỉnh được gán một số .
Bạn cần chọn ra một tập con các cạnh của đồ thị (gọi là tập "tốt") sao cho: nếu chỉ giữ lại các cạnh trong tập con này, thì với mọi đỉnh , hoặc , hoặc bậc của đỉnh khi lấy phần dư cho đúng bằng .
Nói cách khác, với mỗi đỉnh có , số cạnh được chọn kề với nó phải có tính chẵn lẻ bằng ( nghĩa là bậc chẵn, nghĩa là bậc lẻ). Các đỉnh có không có ràng buộc gì.
Hãy tìm một tập con thỏa mãn, hoặc cho biết rằng không tồn tại. Nếu có nhiều đáp án, in ra đáp án bất kỳ.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và — số đỉnh và số cạnh.
- Dòng thứ hai chứa số nguyên .
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và mô tả một cạnh nối đỉnh và . Các cạnh được đánh số từ đến theo thứ tự nhập vào.
Dữ liệu ra
- Nếu không tồn tại tập con thỏa mãn, in ra trên một dòng.
- Ngược lại, dòng đầu in ra — số cạnh trong tập con. dòng tiếp theo, mỗi dòng in chỉ số của một cạnh được chọn.
Ràng buộc
- Đồ thị được đảm bảo liên thông.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 1 0 1 |
-1 | Chỉ có một đỉnh, không có cạnh nên bậc luôn bằng , không thể có bậc lẻ (). |
| 2 1 1 1 1 2 |
1 1 |
Chọn cạnh (nối –): cả hai đỉnh có bậc (lẻ), đúng yêu cầu. |
| 3 3 0 -1 1 1 2 2 3 1 3 |
1 2 |
Chọn cạnh (nối –): đỉnh bậc (chẵn), đỉnh bậc (lẻ), đỉnh có nên tùy ý. |
| 4 5 0 0 0 -1 1 2 2 3 3 4 1 4 2 4 |
0 | Không chọn cạnh nào: mọi đỉnh có bậc (chẵn), riêng đỉnh có nên không cần quan tâm. |
Bình luận