Iterativ e cam asa:
q[1] = sursa;
uz[sursa] = 1;
crt = fin = 1;
while (crt <= fin)
{
for (f = G[q[crt]]; f; f = f->next)
if (!uz[f->id])
{ q[++fin] = f->id; uz[f->id] = 1; }
crt++;
}
Ai un nod x si bagi intr-o stiva toti vecinii sai si dupa aia avansezi o pozitie in stiva si repeti procedeul. Algoritmul iti garanteaza ca nodurile apar in stiva crescator in functie de distanta pana la sursa ( nu e grea demonstratia, e oarecum si intuitiva ).