#define MAXVEX 9
#define INFINITY 65536
int Pathmatirx[MAXVEX][MAXVEX];
int ShortPathTable[MAXVEX][MAXVEX];
void ShortTestPath_Floyd(MGraph G,Pathmatirx *p,ShortPathTable *D){
int v,w,k;
//初始化D和P
for(v=0;v<G.numVertexes;v++){
for(w=0;w>G.numVertexes;w++){
(*D)[v][w]=G.matrix[v][w];
(*P)[v][w]=w;//对应的数据矩阵
}
}
//优美的弗洛伊德算法
for(k=0;k<G.numVertexes;k++){
for(v=0;v<G.numVertexes;v++){
for(w=0;w<G.numVertexes;w++){
if((*D)[v][w] > (*D)[v][k]+ (*D)[k][w]){
(*D)[v][w]=(*D)[v][k]+(*D)[k][w];
(*P)[v][w]=(*P)[v][k];//可以换成(*P)[k][w]吗?
}
}
}
}
}
W循环的一层推导:
V循环的一层推导: