trang chủ / đề bài / qn_tst_25_b

Bật đèn

Đề bài

Mô tả

Trong tòa nhà trung tâm hội nghị Bitland có N phòng họp (đánh số từ 1 đến N) và M hành lang nối các phòng đó. Biết rằng:

  • Mỗi hành lang nối hai phòng khác nhau.
  • Giữa hai phòng bất kỳ, tối đa chỉ có một hành lang.
  • Từ bất kỳ phòng nào cũng có thể đi tới bất kỳ phòng khác thông qua các hành lang.

Vào buổi sáng, hệ thống đèn trong một số phòng có thể đang bật, trong khi ở những phòng khác thì không. Nhiệm vụ của bạn là bật đèn trong tất cả các phòng vào đầu ngày làm việc.

Tuy nhiên, toàn bộ đèn của mỗi phòng họp chỉ dùng chung một công tắc cảm biến rất kỳ lạ. Mỗi lần bạn bước vào một phòng, nếu toàn bộ đèn trong phòng đang bật thì công tắc sẽ tự động tắt hết đèn; nếu toàn bộ đèn đang tắt thì công tắc sẽ tự động bật hết đèn.

Cửa vào tòa nhà là ở phòng số 1, vì vậy bạn bắt đầu bằng cách bước vào phòng 1 và đi theo một hành trình theo thứ tự đến các phòng, mỗi phòng nào đó bạn có thể vào nhiều hơn một lần, cũng có phòng bạn có thể không vào lần nào. Bạn có thể kết thúc hành trình ở bất kỳ phòng nào. Vì sắp đến giờ làm việc, bạn phải đảm bảo rằng tất cả các phòng đều có đèn bật.

Yêu cầu: Bạn hãy tìm một hành trình đi đến các phòng họp sao cho tất cả các phòng đều có đèn được bật và thỏa mãn điều kiện tổng số lần đến các phòng không được vượt quá 5×105.

Dữ liệu vào

  • Dòng đầu tiên gồm hai số nguyên N và M (2≤N≤105, 1≤M≤105), theo thứ tự là số phòng và số hành lang;
  • Dòng thứ hai gồm N số nguyên, mỗi số là 0 hoặc 1. Số thứ i là 1 nếu đèn trong phòng i đang bật, là 0 nếu đèn đang tắt. Biết rằng ít nhất một phòng có đèn đang tắt;
  • M dòng tiếp theo, mỗi dòng gồm hai số nguyên Ui và Vi (1≤Ui<Vi≤N), biểu thị có một hành lang nối giữa phòng Ui và Vi.

Các số trên cùng một dòng được ghi cách nhau bởi dấu cách.

Dữ liệu ra

  • Dòng đầu tiên ghi một số nguyên K là số lượt đi vào các phòng trong hành trình. Số này không cần nhỏ nhất, nhưng phải không lớn hơn 5×105.
  • Dòng thứ hai ghi K số nguyên là thứ tự các phòng bạn bước vào (bắt đầu từ phòng 1), sao cho sau khi kết thúc, tất cả các phòng đều có đèn được bật.

Hai phòng liên tiếp trong hành trình phải được nối trực tiếp bằng một hành lang. Lần bước vào phòng 1 ở đầu hành trình cũng làm đổi trạng thái đèn phòng 1.

Nếu có nhiều đáp án thỏa mãn, bạn có thể in ra bất kỳ đáp án hợp lệ nào.

Ràng buộc

  • 2≤N≤105, 1≤M≤105.
  • 1≤Ui<Vi≤N; giữa hai phòng có tối đa một hành lang; đồ thị liên thông.
  • Ít nhất một phòng có đèn đang tắt.

Subtasks

Điểm được tính theo từng test.

  • Subtask 1 (30% số test): N≤100.
  • Subtask 2 (15% số test): chỉ có một phòng duy nhất có đèn tắt.
  • Subtask 3 (15% số test): các hành lang nối tiếp các phòng thành một dãy theo thứ tự 1,2,3,…,N−1,N.
  • Subtask 4 (20% số test): tất cả các phòng (trừ phòng 1) chỉ nối với phòng 1.
  • Subtask 5 (20% số test): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
4 5
0 1 1 0
1 2
2 3
1 3
2 4
3 4
6
1 3 2 4 3 2
Trạng thái đèn ban đầu: phòng 1 tắt, phòng 2 bật, phòng 3 bật, phòng 4 tắt. Sau 4 bước đầu →1→3→2→4: phòng 1,4 bật, phòng 2,3 tắt. Sau 2 bước cuối →3→2: tất cả các phòng đều bật đèn.
2 1
1 0
1 2
3
1 2 1
Bước vào phòng 1 làm tắt đèn phòng 1, sang phòng 2 thì đèn phòng 2 bật, quay lại phòng 1 thì đèn phòng 1 bật lại.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0