Busca de ciclo em permutação com soma máxima

Python Hard loops

Tarefa «Busca de ciclo em permutação com soma máxima»

Dada uma permutação dos números de 1 a N. Considere um grafo direcionado onde cada vértice i possui uma aresta para a[i]. Encontre um ciclo nesse grafo cuja soma dos elementos seja máxima. Se houver múltiplos ciclos, imprima qualquer um. É garantido que N ≥ 2. Um ciclo é definido como uma sequência de vértices distintos, onde cada vértice seguinte é obtido pela regra: próximo = a[atual], e o último vértice retorna ao primeiro por uma aresta.

Formato de Entrada

A primeira linha contém um número inteiro N (2 ≤ N ≤ 10^5). A segunda linha contém N números inteiros a[1], a[2], ..., a[N] — uma permutação dos números de 1 a N.

Formato de Saída

Imprima dois números: o comprimento do ciclo e a soma dos elementos do ciclo. Em seguida, na próxima linha, imprima os elementos do ciclo na ordem de percurso, começando por qualquer elemento.

Exemplos

Exemplo 1

ENTRADA
5 2 3 1 5 4
SAÍDA
2 9 4 5

Exemplo 2

ENTRADA
7 1 2 3 4 5 6 7
SAÍDA
1 7 7

Exemplo 3

ENTRADA
4 abc cde xyz zab
SAÍDA
Invalid input

Exemplo 4

ENTRADA
4 2 1 4 3
SAÍDA
2 7 3 4

Exemplo 5

ENTRADA
3 1 0 2
SAÍDA
1 1 1
main.py