void Dijkstra(Graph G,int v,int path[],int dist[]){
printf("==========Dijkstra========\n");
int vset[max];
int min,u;
for(int i=0;i<G.vexnum;i++){
dist[i]=G.ArcNode[v][i];
vset[i]=0;
if(G.ArcNode[v][i]<max)
path[i]=v;
else
path[i]=-1;
}
vset[v]=1;
path[v]=-1;
for (int i=0;i<G.vexnum-1;i++) {
min=max;
for(int j=0;j<G.vexnum;j++){
if(vset[j]==0&&dist[j]<min){
printf("%d\n",u);
u=j;
min=dist[j];
}
}
vset[u]=1;
for (int j=0;j<G.vexnum;j++) {
if(vset[j]==0&&dist[u]+G.ArcNode[u][j]<dist[j]){
dist[j]=dist[u]+G.ArcNode[u][j];
path[j]=u;
}
}
}
for(int i=0;i<G.vexnum;i++)
printf("%d ",dist[i]);
}
Dijkstra算法求最短路径
最新推荐文章于 2022-12-07 06:30:00 发布