Sei sulla pagina 1di 1

C:\Users\domen\Documents\Algoritmi e Strutture Dati\Miei Codici\COMPITI DA STAMPARE\17092013-1.

c venerdì 29 gennaio 2016 17:04


/*

Scrivere il codice di una funzione C che partendo da un grafo


rappresentante le stazioni di una metropolitana e le loro connessioni con la relativa
distanza, permetta data una particolare stazione di partenza di indicare il percorso
più breve verso un'altra particolare stazione di destinazione.

*/

void dijkstraD(Graph* g, int cn){


int k;
double cost;
for(k=0;k<g->numnodes;++k){
cost=g->cost[cn]+g->graph[cn][k];

ia
if(cost < g->cost[k]){
g->cost[k]=cost;
g->path[k]=cn;
dijkstraD(g,k);
}

er
}
}

void ricostruisciPercorso(Graph* g, int n){


int *v;
int k=0, pn=n, i=0;

gn
v=(int *) calloc(g->numnodes,sizeof(int));

for(i=0;i<g->numnodes;++i) v[i]=-1;
i=0;
while(pn!=0) {
pn=g->path[i];
v[i]=pn;
ge
++i;
}
}

int main(){
Graph metro;
In
int source,dest;
dijkstraD(&metro,source);

ricostruisciPercorso(&metro,dest);

return 0;
}
re
ve
Vi

-1-