difficilmente funziona!!!
basta un controesempio...

prova, con il grafo di prima a modificarlo cosi,togliendo il vecchio ciclo e inserendo un ciclo tra g-c-f
(scusate, ma si vede male)
b - g
| | \
a - c - f
|
d - e

partendo da A, scelto come nodo iniziale, il tuo algoritmo non funziona(infatti continua a visitare g-c-f senza che il contronto con il nodo iniziale sia vero e quindi secondo il tuo algoritmo non c'è un ciclo, mentre invece c'è), o peggio può andare in loop se non prevedi un marcamento dei nodi visitati...