Khôi phục khu rừng từ XOR
Đề bài
Mô tả
Một khu rừng là một đồ thị vô hướng không có chu trình (không có cạnh khuyên và không có cạnh song song). Khu rừng gồm đỉnh được đánh số từ đến .
Với mỗi đỉnh , người ta ghi lại hai số nguyên:
- : số đỉnh kề với .
- : tổng XOR (phép hoặc loại trừ theo bit) của chỉ số các đỉnh kề với . Nếu không có đỉnh kề nào thì .
Từ các giá trị và , hãy khôi phục lại các cạnh của khu rừng ban đầu.
Dữ liệu bảo đảm luôn tồn tại một khu rừng tương ứng với các số đã cho.
Dữ liệu vào
- Dòng đầu tiên chứa số nguyên : số đỉnh của đồ thị.
- Trong dòng tiếp theo, dòng thứ (ứng với đỉnh ) chứa hai số nguyên và cách nhau bởi dấu cách.
Dữ liệu ra
- Dòng đầu tiên in ra số nguyên : số cạnh của đồ thị.
- Trong dòng tiếp theo, mỗi dòng in ra hai số nguyên phân biệt và biểu thị một cạnh nối đỉnh và đỉnh .
Các cạnh có thể in theo thứ tự bất kỳ; hai đỉnh của một cạnh cũng có thể in theo thứ tự bất kỳ.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 2 3 1 0 1 0 |
2 1 0 2 0 |
Đỉnh 0 kề với đỉnh 1 và 2 nên , . Đỉnh 1 và đỉnh 2 mỗi đỉnh chỉ kề với đỉnh 0. |
| 2 1 1 1 0 |
1 0 1 |
Chỉ có một cạnh nối đỉnh 0 và đỉnh 1. Khi đó và . |
Bình luận