Rải nhựa đường Berland

Đề bài

Mô tả

Đất nước Berland có n 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á n 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á n ngày.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm: số thành phố và số con đường.
  • m dòng tiếp theo, mỗi dòng chứa ba số nguyên ai, bi, ci: con đường thứ i nối hai thành phố aibi, với ci=1 nếu con đường ban đầu đã được rải nhựa và ci=0 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 x (0xn) là số ngày cần dùng; dòng thứ hai in x 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

  • 1n100
  • 0mn(n1)2
  • 1ai,bin, aibi
  • ci{0,1}

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

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0