Con kiến trên cây
Nộp bài giải
Điểm:
7,00 (OI)
Giới hạn thời gian:
2.0s
Python 3
5.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
C++, Dart, Go, Groovy, Java, Javascript, Kotlin, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Typescript, Zig
Cho một cây có đỉnh được đánh số từ đến , gốc là đỉnh . Một lá là đỉnh khác gốc và có đúng một cạnh nối tới đỉnh khác.
Một con kiến đứng tại gốc và muốn thực hiện một hành trình thoả mãn:
- Bắt đầu và kết thúc tại gốc.
- Đi qua mỗi cạnh đúng hai lần (mỗi lượt đi qua chỉ tính một chiều).
- Khi đi, các lá được thăm theo đúng thứ tự cho trước.
Hãy in ra một hành trình hợp lệ, hoặc thông báo không tồn tại.
Dữ liệu vào
- Dòng đầu tiên chứa số nguyên () — số đỉnh của cây.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên (, ) mô tả một cạnh nối đỉnh và đỉnh .
- Dòng cuối cùng chứa số nguyên là dãy thứ tự các lá cần được thăm. Mỗi lá xuất hiện đúng một lần.
Dữ liệu ra
- Nếu không tồn tại hành trình thoả mãn, in ra .
- Ngược lại, in ra số nguyên là dãy các đỉnh con kiến lần lượt đi qua trong hành trình (kể cả gốc xuất phát và gốc kết thúc).
Ràng buộc
- Đồ thị đã cho là cây.
- Mỗi lá xuất hiện đúng một lần trong dãy thứ tự thăm.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 1 2 2 3 3 |
1 2 3 2 1 | Cây là đường thẳng . Lá duy nhất là . Kiến đi rồi quay về . |
| 6 1 2 1 3 2 4 4 5 4 6 5 6 3 |
1 2 4 5 4 6 4 2 1 3 1 | Các lá là và phải được thăm theo thứ tự . Kiến đi xuống cây con của trước (để thăm rồi ), sau đó mới sang cây con của . |
| 6 1 2 1 3 2 4 4 5 4 6 5 3 6 |
-1 | Thứ tự buộc kiến phải rời cây con của để thăm rồi quay lại — như vậy phải đi qua cạnh quá hai lần, nên không tồn tại hành trình. |
Bình luận