Mi sa che dovresti chiedere in programmazione: fatti spostare.

Comunque dovresti anche specificare se i dati sono in un database e di quale tipo. Probabilmente qualche database ha dei comandi che ti fanno tutto in poche righe.
Invece se devi fare tutto tu (ad esempio se hai un DB di tipo CSV), devi avere un vettore dinamico, in cui salvare tutti gli "amici" non (ancora) risolti, in modo da avere traccia del punto da cui proseguire.