El ciclo más largo

Tiempo límite 2 s
Memoria límite 256 MB
Casos de prueba 9
Dificultad Difícil Algoritmos
Mostrar (2) DFSGrafos
Enviar solución

Puntos: 20

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Un grafo dirigido tiene \(n\) nodos, numerados de \(0\) a \(n - 1\), y de cada nodo sale a lo más una arista: la del nodo \(i\) va a \(e_i\), o no existe si \(e_i = -1\). Encuentra el largo del ciclo más largo, o \(-1\) si no hay ciclos.

Entrada

La primera línea tiene \(n\) \((1 \le n \le 10^5)\). La segunda tiene \(e_0, \dots, e_{n-1}\) \((-1 \le e_i < n, e_i \ne i)\).

Salida

El largo del ciclo más largo, o \(-1\).

Ejemplo 1

Entrada

5
3 3 4 2 3

Salida

3

Ejemplo 2

Entrada

4
2 -1 3 1

Salida

-1

Ejemplo 3

Entrada

1
-1

Salida

-1

Comentarios

No hay comentarios por el momento.