@Furchtbichler - sofern ich mich grad nicht vertue, dürfte der Code nen kleinen Fehler enthalten (obwohls ja nur Pseudocode ist..) - und zwar merkst du nicht wirklich, welche Knoten bereits besucht sind (bzw. du überprüfst nicht, ob der Knoten bereits besucht wurde), somit kann der Fall auftreten, dass Cycle nie aufhört -> z.B. hier:
A->B->C->D->B
Edit2: Sonst sollte es aber nach diesem Prinzip gehen! Einfach eine kleine Überprüfung einbauen, ob man an einem Knoten angelangt ist, der bereits im "Path" enthalten ist, jedoch nicht der "First" Knoten ist! Hier dann abbrechen, da ja der Startknoten dann nicht im Zyklus enthalten ist sondern nur dorthin führt..
@Threadstarter - es gibt da eine Unklarheit:
Willst du alle Zyklen die einen bestimmten Knoten (A) enthalten oder willst du alle Zyklen, wo kein Element eines Zyklus' in einem anderen Zyklus vorkommt?!
Ich bin mir nicht ganz sicher, aber die Implementierung dürfte je nach dem anders aussehen. Bevor ich mir also Gedanken mache, wäre es schön, wenn du das klärst!
Edit:
Da ich grad Zeit habe, habe ich das mal schnell gezeichnet