Đường đi theo tính chẵn lẻ
Nộp bài giải
Điểm:
8,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
Ada, Algol, Assembly, Awk, C, C#, C++, D, Dart, Forth, Fortran, Go, Groovy, Java, Javascript, Kotlin, Lisp, Lua, Nim, ObjC, Pascal, Perl, PHP, Pike, Python, Racket, Ruby, Rust, Scheme, Scratch, Sed, TCL, Typescript, V, Zig
Cho một đồ thị vô hướng đỉnh, cạnh, không có khuyên và không có cạnh kép. Mỗi đỉnh được gán một giá trị — chính là tính chẵn lẻ của số lần đỉnh đó phải xuất hiện trong đường đi.
Bạn cần tìm một đường đi (có thể rỗng) thỏa mãn:
- Hai đỉnh liên tiếp trên đường đi phải có cạnh nối trực tiếp trong đồ thị.
- Mỗi đỉnh xuất hiện trên đường đi đúng số lần có cùng tính chẵn lẻ với (nếu thì xuất hiện số lần chẵn, kể cả lần; nếu thì xuất hiện số lần lẻ).
- Tổng số đỉnh trên đường đi (đếm cả lặp lại) không vượt quá .
Một đỉnh có thể được ghé thăm nhiều lần. Đường đi có thể bắt đầu và kết thúc ở bất kỳ đỉnh nào, hoặc rỗng (không có đỉnh nào).
Nếu không tồn tại đường đi như vậy, in ra .
Dữ liệu vào
- Dòng đầu: hai số nguyên và .
- dòng tiếp theo, mỗi dòng chứa hai số nguyên — một cạnh giữa hai đỉnh và ().
- Dòng cuối: số nguyên , mỗi số là hoặc .
Dữ liệu ra
Nếu không tồn tại đường đi, in ra một số .
Ngược lại, in ra hai dòng:
- Dòng đầu: số lượng đỉnh trên đường đi ().
- Dòng thứ hai: số nguyên — danh sách các đỉnh theo thứ tự xuất hiện trên đường đi. Nếu thì có thể bỏ trống dòng này.
Nếu có nhiều đáp án, in ra bất kỳ.
Ràng buộc
- ,
- Đồ thị không có khuyên và không có cạnh kép.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 2 1 2 2 3 1 1 1 |
7 3 2 1 2 3 2 3 |
Đỉnh xuất hiện lần (lẻ), đỉnh xuất hiện lần (lẻ), đỉnh xuất hiện lần (lẻ). Phù hợp với . Mọi đường đi khác thỏa ràng buộc (ví dụ "1 2 3") đều được chấp nhận. |
| 5 7 1 2 1 3 1 4 1 5 3 4 3 5 4 5 0 1 0 1 0 |
12 4 1 2 1 3 5 3 5 3 1 3 1 |
Đỉnh và xuất hiện số lần lẻ; các đỉnh còn lại xuất hiện số chẵn lần. |
| 2 0 0 0 |
0 | Tất cả , đường đi rỗng là hợp lệ. |
Bình luận