Con questo input del primo test case d’esempio modificato
10
1 4 6 3 7 6 8 5 9 7
il tuo codice restituisce 7 invece di 5.
questo perché la lunghezza del ciclo non viene calcolata correttamente in quanto consideri il ciclo più la distanza iniziale dal ciclo.
Seguendo l’input dato come suggerimento, con vista in profondità si fa il seguente percorso: 0, 1, 4, 7, 5, 6, 8, 9, 7.
Partendo dal nodo 0 il ciclo inizia dal nodo 7 e quindi hai percorso una distanza dist[n] = d = 3 (dist_prev) quando il ciclo si chiude hai percorso una distanza d = 8 (dist_curr) e la lunghezza del ciclo risulta:
dist_curr - dist_prev = 5.
Per trovare il ciclo di lunghezza massima utilizzando il tuo codice devi trovare nella DFS la max_dist = max{dist_curr - dist[n]} e prendi 100/100.
Grazie mille, finalmente ci sono riuscito! Avevo già provato a risolverlo, il problema era che assegnavo a dist[n] = d - dist[n] (quando visto[n] == 1), ciò é sbagliato perché bisogna assegnare dist[n] = d ogni volta che entra in un nuovo grafo ancora non visitato.