trang chủ / bài tập / doorprob

Bài toán những cánh cửa

Đề bài

Mô tả

n căn phòng, mỗi phòng có một cánh cửa. Mỗi cửa đang ở trạng thái khóa hoặc mở. Trạng thái ban đầu của cửa phòng iri: ri=0 nghĩa là cửa đang khóa, ri=1 nghĩa là cửa đang mở.

m công tắc. Mỗi công tắc điều khiển một số cửa. Mỗi cửa được điều khiển bởi đúng hai công tắc. Khi bật hoặc tắt một công tắc (đổi trạng thái công tắc), tất cả các cửa mà công tắc đó điều khiển đều bị đảo trạng thái (khóa thành mở, mở thành khóa).

Ban đầu tất cả công tắc ở trạng thái tắt. Bạn có thể chọn đổi trạng thái một tập công tắc bất kỳ (mỗi công tắc chỉ tính bật hoặc không). Hãy xác định liệu có cách nào để tất cả các cửa cùng mở hay không.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm — số phòng và số công tắc.
  • Dòng thứ hai chứa n số nguyên r1,r2,,rn (0ri1) — trạng thái ban đầu của các cửa.
  • m dòng tiếp theo, dòng thứ i bắt đầu bằng số nguyên xi (0xin) — số cửa mà công tắc i điều khiển, tiếp theo là xi số nguyên phân biệt là chỉ số các phòng mà công tắc đó điều khiển.

Dữ liệu bảo đảm mỗi cửa được điều khiển bởi đúng hai công tắc.

Dữ liệu ra

In ra "YES" nếu tồn tại cách để tất cả cửa cùng mở, ngược lại in ra "NO".

Ràng buộc

  • 2n105
  • 2m105
  • 0ri1
  • Mỗi cửa được điều khiển bởi đúng hai công tắc.

Ví dụ

Input Output Giải thích
3 3
1 0 1
3 1 2 3
1 2
2 1 3
YES Trạng thái ban đầu là [1, 0, 1]. Bật công tắc 3 được [0, 0, 0], sau đó bật công tắc 1 được [1, 1, 1] — tất cả cửa mở.
3 3
1 0 1
3 1 2 3
2 1 2
1 3
NO Không có tập công tắc nào làm tất cả cửa cùng mở.
3 3
1 0 1
2 1 3
2 1 2
2 2 3
NO Các ràng buộc mâu thuẫn nhau, không thể mở đồng thời mọi cửa.

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