Questa è la funzione che utilizzio per il calcolo delle distanze, ossia per ogni nodo raggiungibile da quello da me prescelto per la visita, tramite questa funzione, mi calcolo la relativa distanza.
codice:
int distanza (int x) //Funzione per il calcolo della distanza
{
nodo davanti, dietro;
nodo w;
int dist[MAX_V],dista, stop = x, conta=-1, c=x, count=0;
//dist[] è il vettore contenente la distanza dei nodi raggiungibili da s
davanti = dietro = NULL;
visitato[x] = TRUE;
addc(&davanti, &dietro, x);
dist[x] = 0;
while(davanti) { x = deletec(&davanti);
if(stop != x) printf("\n\nNodo:%2d [ dist %d] ", x, dist[x]);
//Se stop (il nodo di partenza) è diverso da quello
for(w = grafo[x]; w; w = w->succ)
//in questione, allora ne scrivo la distanza che...
if(!visitato[w->vertice]) { addc(&davanti, &dietro, w->vertice);
visitato[w->vertice] = TRUE;
dist[w->vertice] = dist[x] + 1;//incremento qui
dista = dist[x];
count+=1;
}
}printf("\n\nIl numero dei nodi raggiungibili da %d e': %d", c, count );
}