Tập cạnh tốt

Đề bài

Mô tả

Cho một đồ thị vô hướng liên thông gồm n đỉnh và m 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 i được gán một số di{1,0,1}.

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 i, hoặc di=1, hoặc bậc của đỉnh i khi lấy phần dư cho 2 đúng bằng di.

Nói cách khác, với mỗi đỉnh có di1, số cạnh được chọn kề với nó phải có tính chẵn lẻ bằng di (di=0 nghĩa là bậc chẵn, di=1 nghĩa là bậc lẻ). Các đỉnh có di=1 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 nm — số đỉnh và số cạnh.
  • Dòng thứ hai chứa n số nguyên d1,d2,,dn.
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên uv mô tả một cạnh nối đỉnh uv. Các cạnh được đánh số từ 1 đến m 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 1 trên một dòng.
  • Ngược lại, dòng đầu in ra k — số cạnh trong tập con. k 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

  • 1n3·105
  • n1m3·105
  • 1di1
  • 1u,vn
  • Đồ 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 0, không thể có bậc lẻ (d1=1).
2 1
1 1
1 2
1
1
Chọn cạnh 1 (nối 12): cả hai đỉnh có bậc 1 (lẻ), đúng yêu cầu.
3 3
0 -1 1
1 2
2 3
1 3
1
2
Chọn cạnh 2 (nối 23): đỉnh 1 bậc 0 (chẵn), đỉnh 3 bậc 1 (lẻ), đỉnh 2d2=1 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 0 (chẵn), riêng đỉnh 4d4=1 nên không cần quan tâm.

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 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