Rải nhựa đường Berland
Đề bài
Mô tả
Đất nước Berland có thành phố, một số cặp thành phố được nối với nhau bởi các con đường hai chiều. Mỗi con đường hoặc đã được rải nhựa, hoặc chưa.
Nhà vua muốn rải nhựa toàn bộ các con đường. Mỗi ngày nhà vua chọn đúng một thành phố và ra lệnh cho đội thợ xử lý tất cả các con đường xuất phát từ thành phố đó. Tuy nhiên, đội thợ luôn làm ngược lại một cách máy móc: với mỗi con đường xuất phát từ thành phố được chọn, nếu đường chưa được rải nhựa thì họ rải nhựa nó, còn nếu đường đã được rải nhựa thì họ bóc lớp nhựa đi.
Nói cách khác, mỗi lần chọn một thành phố, trạng thái (đã rải nhựa / chưa rải nhựa) của mọi con đường kề với thành phố đó bị đảo lại.
Hãy xác định xem có thể rải nhựa được toàn bộ các con đường sau không quá ngày hay không, và nếu có thì chỉ ra một cách thực hiện.
Chọn cùng một thành phố hai lần sẽ triệt tiêu tác dụng, nên trong một lời giải tối ưu mỗi thành phố chỉ cần được chọn nhiều nhất một lần; tuy vậy đáp án được chấp nhận chỉ cần dùng không quá ngày.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và : số thành phố và số con đường.
- dòng tiếp theo, mỗi dòng chứa ba số nguyên , , : con đường thứ nối hai thành phố và , với nếu con đường ban đầu đã được rải nhựa và nếu chưa.
Giữa hai thành phố bất kỳ có nhiều nhất một con đường.
Dữ liệu ra
Nếu có thể rải nhựa toàn bộ các con đường: dòng đầu in số nguyên () là số ngày cần dùng; dòng thứ hai in số nguyên là chỉ số các thành phố được chọn theo thứ tự bất kỳ. Nếu có nhiều đáp án, in ra bất kỳ đáp án nào.
Nếu không có cách nào, in ra một dòng chứa Impossible.
Ràng buộc
- ,
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 4 1 2 1 2 4 0 4 3 1 3 2 0 |
2 1 2 |
Chọn thành phố 1 rồi thành phố 2. Con đường (1,2) bị đảo hai lần nên giữ trạng thái đã rải nhựa; các con đường (2,4), (4,3), (3,2) đều trở thành đã rải nhựa. Mọi con đường đều được rải nhựa. |
| 3 3 1 2 0 2 3 0 3 1 0 |
Impossible | Ba con đường tạo thành chu trình lẻ với ràng buộc đảo trạng thái mâu thuẫn, không thể rải nhựa toàn bộ. |
Bình luận