Trouver le cycle le plus long dans un graphe orienté en utilisant DFS

J'ai besoin de trouver le plus long cycle dans un graphe orienté à l'aide de DFS.

Une fois, j'ai vu cet article de Wikipédia décrivant la façon de faire cela, et je pense qu'il a approché le problème, quelque chose comme marquant le nœud avec l'un des trois états suivants: Nœud pas encore visité, Terminé la recherche dans le noeud et le Noeud visité, mais pas encore fini de visiter.

Je vous serais reconnaissant si quelqu'un pouvait partager le lien avec moi. Par ailleurs, il n'est pas de l'Algorithme de Tarjan.

Le problème ci-dessous est ce que j'essaie de résoudre, dans le cas où vous voudriez connaître.

Les deux chiffres donnés dans la première ligne est N et M représentent chacun le nombre de nœuds et le nombre d'arêtes orientées.

À partir de la deuxième ligne de M ensembles de deux chiffres A et B, ce qui signifie que le nœud A et B sont connectés, mais vous ne pouvez traverser le nœud de A à B.

input.txt:

7 9  
1 2  
2 3  
3 1  
3 4  
4 5  
5 1  
5 6  
6 7  
7 2  

La réponse dans ce cas est de 6, depuis le 2>3>4>5>6>7>2.

source d'informationauteur John Graveston