向图建立完毕\n");Р}Р2.2迪杰斯特拉算法Рvoid Dijkstra(MGraph *G,int v1,int n)Р{Рint D2[MVNum],P2[MVNum];Рint v,i,w,min;Рenum boolean S[MVNum];Рfor(v=1;v<=n;v++)Р {Р S[v]=FALSE;Р D2[v]=G->arcs[v1][v];Р if(D2[v]<Maxint)Р P2[v]=v1;Р elseР P2[v]=0;Р }РD2[v1]=0;S[v1]=TRUE;Рfor(i=2;i<n;i++)Р{Р min=Maxint;Р for(w=1;w<=n;w++)Р if(!S[w]&&D2[w]<min)Р {Р v=w;min=D2[w];Р }Р S[v]=TRUE;Р for(w=1;w<=n;w++)Р if(!S[w]&&(D2[v]+G->arcs[v][w]<D2[w]))Р {Р D2[w]=D2[v]+G->arcs[v][w];Р P2[w]=v;Р }Р}Рprintf("路径长度路径\n");Р for(i=1;i<=n;i++)Р {Р printf("%5d",D2[i]);Р printf("%5d",i);v=P2[i];Р while(v!=0)Р {Р printf("<-%d",v);Р v=P2[v];Р }Рprintf("\n");Р }Р}Р 2.3 费洛伊德算法Рvoid Floyd(MGraph *G,int n)Р{ int i,j,k,v,w;Р for(i=1;i<=n;i++)Р for(j=1;j<=n;j++)Р { if(G->arcs[i][j]!=Maxint)Р P[i][j]=j;Р elseР P[i][j]=0;Р D[i][j]=G->arcs[i][j];