Có một định lý nổi tiếng rằng bất kỳ hoán vị nào cũng có thể bị phân hủy thành một tập hợp các chu kỳ . Công việc của bạn là viết chương trình ngắn nhất có thể để làm như vậy.
Đầu vào:
Hai dòng. Số thứ nhất chứa một số N
, số thứ hai chứa N
các số nguyên riêng biệt trong phạm vi được [0,N-1]
phân tách bằng dấu cách. Các số nguyên này đại diện cho một hoán vị của N
các yếu tố.
Đầu ra:
Một dòng cho mỗi chu kỳ trong hoán vị. Mỗi dòng nên là một danh sách các số nguyên được phân tách bằng dấu cách theo thứ tự chu kỳ.
Chu kỳ có thể là đầu ra theo bất kỳ thứ tự nào, và mỗi chu kỳ có thể là đầu ra bắt đầu ở bất kỳ vị trí nào.
Ví dụ 1:
8
2 3 4 5 6 7 0 1
Đầu vào này mã hóa hoán vị 0-> 2, 1-> 3, 2-> 4, 3-> 5, 4-> 6, 5-> 7, 6-> 0, 7-> 1. Điều này phân hủy thành các chu kỳ như thế này:
0 2 4 6
1 3 5 7
Một đầu ra hợp lệ như nhau sẽ là
5 7 1 3
2 4 6 0
Ví dụ 2:
8
0 1 3 4 5 6 7 2
đầu ra hợp lệ:
0
1
4 5 6 7 2 3
>C.