Ngôi Nhà Của Giun
Đề bài
Mô tả
Cho một đồ thị vô hướng đỉnh (đánh số ) và cạnh. Đồ thị không có cạnh nối một đỉnh với chính nó và giữa hai đỉnh bất kỳ có nhiều nhất một cạnh.
Bạn được cho một chu trình Euler trên đồ thị — một dãy sao cho và mỗi cạnh của đồ thị xuất hiện đúng một lần trong dãy . Đỉnh xuất phát là cố định.
Nhiệm vụ của bạn là tìm một dãy khác cũng là một chu trình Euler trên cùng đồ thị đó, cùng bắt đầu và kết thúc tại đỉnh (tức ), sao cho dãy lớn hơn hẳn dãy theo thứ tự từ điển, và trong số các dãy thỏa mãn điều đó, hãy chọn dãy nhỏ nhất theo thứ tự từ điển.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và .
- Dòng thứ hai chứa số nguyên dương không vượt quá — đó là dãy mô tả chu trình Euler ban đầu. Bảo đảm .
Dữ liệu ra
- In ra số nguyên dương mô tả chu trình Euler mới tìm được, số đầu tiên phải bằng số cuối cùng và bằng .
- Nếu không tồn tại chu trình Euler nào lớn hơn hẳn chu trình đã cho, in ra dòng
No solution.
Ràng buộc
- Đồ thị không có khuyên và không có cạnh bội (nhưng có thể có đỉnh cô lập).
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 3 1 2 3 1 |
1 3 2 1 | Chu trình Euler duy nhất khác có cùng đỉnh xuất phát là , và nó lớn hơn dãy đã cho theo thứ tự từ điển. |
| 3 3 1 3 2 1 |
No solution | Dãy đã là chu trình lớn nhất theo thứ tự từ điển bắt đầu tại đỉnh . |
Bình luận