数据结构 图的应用
- 格式:pdf
- 大小:38.04 KB
- 文档页数:2
2
1
C:\Users\TeAmo\Desktop\图未优化.cpp } } void Dijkstra(Graph G,int v0) { int min,v,w; for(v=0;v<G.vexnum;++v){ final[v]=false; D[v]=G.arcs[v0][v].adj; for(int w=0;w<G.vexnum;++w) path[v][w]=false; if(D[v]<INF){path[v][v0]=true;path[v][v]=true;} }//for D[v0]=0; final[v0]=true; for(int i=1;i<G.vexnum;++i){ min=INF; for(w=0;w<G.vexnum;++w) if(!final[w]) if(D[w]<min){v=w;min=D[w];} final[v]=true; for(w=0;w<G.vexnum;++w) if( !final[w]&&(min+G.arcs[v][w].adj<D[w])){ D[w]=min+G.arcs[v][w].adj; for(int j=0;j<MaxVex;j++)path[w][j]=path[v][j]; path[w][w]=true; }//if }//for }//dij void shortpath(Graph a) { int result; for(int i=0;i<a.vexnum;i++) { Dijkstra(a,i); d[i]=getmax(D,a);//D[i]为始点到第i个点的最短路径 //d[i]为始点为i时到其他各点最短路径中的最长路径; } result=getmin(d,a); Dijkstra(a,result);//getmin(d)为结果,医院位置 for(int j=0;j<a.vexnum;j++) { cout<<endl<<"从医院,即点"<<result+1<<"到点"<<j+1<<"最短距离为"<<D[j]; } void main() { Graph a; input(&a); shortpath(a); }