[PreVOI 23 - Ninh Bình] Bài 2: Permutation
Xem dạng PDFTrong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Năm mới đã đến, và Minh - lớp trưởng đội tuyển X - đã có một dự định: bắt cả đội tuyển đi chạy quanh trường nhân dịp đầu năm mới.
Trường X có ~N~ (~2 \le N \le 100000~) địa điểm được đánh số từ 1 đến ~N~ và ~(N - 1)~ con đường kết nối 2 địa điểm, và chắc chắn giữa 2 địa điểm có ít nhất 1 tuyến đường nối chúng. Minh muốn mọi người bắt đầu từ một địa điểm, và lặp lại thao tác sau ~(N - 1)~ lần: chọn một địa điểm chưa được đến bao giờ để đi từ điểm hiện tại. Để giúp mọi người khỏe hơn, khoảng cách giữa 2 địa điểm liên tiếp phải là một dãy không giảm.
Hay nói cách khác, Minh và các bạn cần tìm một dãy ~p[1], p[2], \dots, p[N]~ sao cho:
- ~p[1], p[2], \dots, p[N]~ tạo thành một hoán vị, tức là mỗi số từ 1 đến ~N~ xuất hiện đúng một lần.
- ~dist(p[i], p[i + 1]) \le dist(p[i + 1], p[i + 2])~ (~1 \le i \le N - 2~) với ~dist(a, b)~ là độ dài đường đi ngắn nhất giữa địa điểm ~a~ và địa điểm ~b~.
Yêu cầu: Hãy tìm một dãy như vậy, hoặc in ra "-1" nếu không có dãy nào thỏa mãn.
Input
- Dòng đầu tiên chứa số ~N~ (~2 \le N \le 100000~).
- Mỗi dòng trong ~(N - 1)~ dòng tiếp theo ghi 2 số ~a~ và ~b~, biểu thị có cạnh nối giữa 2 đỉnh ~a~ và ~b~. Input đảm bảo đồ thị liên thông.
Output
- In ra dãy ~n~ số là hoán vị thỏa mãn điều kiện đề bài, hoặc -1 nếu không có dãy nào thỏa mãn.
Sample Input 1
5
1 2
1 3
2 4
3 5
Sample Output 1
1 2 3 4 5
Bình luận