void Dijkstra(MGraph g,int v,int dist[],int path[]){
int set[maxSize];
int min,i,j,u;
//初始化开始
for(i = 0;i<g.vexnum;i++){
dist[i] = g.edges[v][i];
set[i] = 0;
if(g.edges[v][i]<INF)
path[i] = v;
else
path[i] = -1;
}
set[v]=1;path[v]=-1;
//初始化结束
//关键操作开始
for(i = 0;i<g.vexnum-1;i++){
min = INF;
for(j = 0;j<g.vexnum;j++)
if(set[j]==0&&dist[j]<min){
min = dist[j];
u = j;
}
set[u] = 1;
for(j = 0;j<g.vexnum;j++){
if(set[j]==0&&dist[j]>dist[u]+g.edges[u][j]){
dist[j] = dist[u]+g.edges[u][j];
path[j] = u;
}
}
}
}
Dijkstra伪代码实现个人笔记
于 2023-10-20 13:34:11 首次发布