Existe um teorema bem conhecido de que qualquer permutação pode ser decomposta em um conjunto de ciclos . Seu trabalho é escrever o programa mais curto possível para isso.
Entrada:
Duas linhas. O primeiro contém um número N
, o segundo contém N
números inteiros distintos no intervalo, [0,N-1]
separados por espaços. Esses números inteiros representam uma permutação de N
elementos.
Resultado:
Uma linha para cada ciclo na permutação. Cada linha deve ser uma lista separada por espaços de números inteiros em ordem de ciclo.
Os ciclos podem ser emitidos em qualquer ordem e cada ciclo pode ser iniciado a partir de qualquer posição.
Exemplo 1:
8
2 3 4 5 6 7 0 1
Esta entrada codifica a permutação 0-> 2, 1-> 3, 2-> 4, 3-> 5, 4-> 6, 5-> 7, 6-> 0, 7-> 1. Isso se decompõe em ciclos como este:
0 2 4 6
1 3 5 7
Uma saída igualmente válida seria
5 7 1 3
2 4 6 0
Exemplo 2:
8
0 1 3 4 5 6 7 2
saída válida:
0
1
4 5 6 7 2 3
>C.