Supponiamo che i nodi del grafo siano numerati da a
Teniamo un array
che memorizzi, per ogni nodo, il nome della
componente connessa nella quale esso si trova, ossia l'indice del minimo
nodo cui è connesso. Inizializziamo tutto l'array a zero, per dire
che nessun nodo è ancora classificato (se la numerazione dei nodi partisse
da zero, ovviamente, per l'inizializzazione si dovrebbe usare un valore
del tipo
)
Si scandisce poi l'array, soffermandosi su ogni nodo per cui
è uguale a zero. Per un tale nodo, si effettua una visita BFS
della sua componente connessa; per ogni nodo incontrato
si pone
Alla fine, tutti gli indici dell'array saranno diversi da
zero.
A questo punto conviene servirsi di un altro array nel quale
alla fine vogliamo avere
se
non è rappresentante
di alcuna componente;
se
è rappresentante di una componente
di dimensione
Il calcolo del contenuto di
, facendo uso di
è banale.
Notando che contiene numeri compresi tra 0 e
, possiamo ora
ordinare i nodi con un algoritmo lineare e stabile, usando come chiave
del nodo
proprio
. Cosí facendo, tutti i nodi che non sono
rappresentanti finiscono in fondo. Gli altri forniscono l'elenco
secondo le specifiche desiderate.