Introduction to Algorithms 或 The Art Of Computer Programming
冒个泡哈!!!
程序代码:void ShortestPath_DIJ(MGraph G,int v0,PathMatrix_D &P,ShortPathTable &D)
{
int *final,v,w,i,j,min;
final=(int *)malloc(G.vexnum*sizeof(int));
for(v=0;v<G.vexnum;++v){
final[v]=FALSE;
D[v]=G.arcs[v0][v].adj;
for(w=0;w<G.vexnum;++w)
P[v][w]=FALSE;
if(D[v]<INFINITY){
P[v][v0]=TRUE;
P[v][v]=TRUE;}
}
D[v0]=0;
final[v0]=TRUE;
for(i=1;i<G.vexnum;++i){
min=INFINITY;
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<INFINITY&&G.arcs[v][w].adj<INFINITY&&(min+G.arcs[v][w].adj<D[w])){
D[w]=min+G.arcs[v][w].adj;
for(j=0;j<G.vexnum;++j)
P[w][j]=P[v][j];
P[w][w]=TRUE;
}
}
}