void ShortestDist( MGraph Graph, int dist[], Vertex S ){
int n=Graph->Nv;
for(int i=0;i<n;i++){
dist[i]=Graph->G[S][i];
}
int vis[MaxVertexNum]={0};
vis[S]=1;
dist[S]=0;
int min,v;
for(int i=0;i<n;i++){
min=INFINITY;
v=-1;
for(int j=0;j<n;j++){
if(vis[j]==0&&dist[j]<min){
v=j;
min=dist[j];
}
}
if(v==-1) //源点S与v点不连通,则跳到下一个点,否则调整未选择点集合中的路径长度
continue;
vis[v]=1;
for(int j=0;j<n;j++){
if(vis[j]==0&&((dist[v]+Graph->G[v][j])<dist[j])){
dist[j]=dist[v]+Graph->G[v][j];
}
}
}
for(int i=0;i<n;i++){
if(dist[i]==INFINITY)
dist[i]=-1;
}
}
6-12 Shortest Path [2] (25 分)【单元最短路径 - 迪杰斯特拉】
最新推荐文章于 2023-06-24 15:19:43 发布