对两点之间距离不断缩小
代码
void
Floyed(MGraph G)
{
int
C[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
//C
中存放最短距离,
path
中存放最短路径
int
path[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
int
i,j,k;
for
(i=0;i<G.vexnum;i++)
for
(j=0;j<G.vexnum;j++)
//
初始化
{
C[i][j]=G.arcs[i][j];
path[i][j]=-1;
}
for
(k=0;k<G.vexnum;k++)
,
for
(i=0;i<G.vexnum;i++)
for
(j=0;j<G.vexnum;j++)
if
(C[i][j]>C[i][k]+C[k][j])
//
找到更短路径
{
C[i][j]=C[i][k]+C[k][j];
//
修改路径长度
path[i][j]=k;
//
修改最短路径为经过点
k
}
DispAllPath(G,C,path);
}