Très alambiqué votre truc.

dfs devrait retourner un booléen pour indiquer si un cycle a été trouvé ou le cycle lui-même.
Il suffit de faire un simple parcours en profondeur d'abord.
Le chemin...