/***********************************************************************************/
typedef int Pathmatrix[MAXVEX][MAXVEX];
typedef int ShortPathTbale[MAXVEX][MAXVEX];
/*Floyd算法,求网图G中各顶点V到到其余顶点w的最短路径P[v][w]及带权长度D[v][w]*/
void ShortestPath_Floyd(MGraph G, Pathmatirx *P, ShortPathTbale*D)
{
int v, w, k;
for (v = 0; v < G.numVertexes; v++) /*初始化D和P*/
{
for (w = 0; w < G.numVertexes; w++)
{
(*D)[v][w] = G.arc[v][w]; /*D[v][w]值即为对应点间的权值*/
(*P)[v][w] = w;
}
}
for (k = 0; k < G.numEdges; 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] = k;
}
}
}
}
}