Dijkstra算法是求图中某一顶点到其余各顶点的最短路径,如果求图中任意一对顶点间的最短路径,则通常使用弗洛伊德算法
Floyd算法:
运行结果:
输入:
4 8
0 1 2 3
0 1 5
0 3 7
1 2 4
1 3 2
2 0 3
2 1 3
2 3 2
3 2 1
void Floyd(AMGraph G,int path[][MaxVertices])
{
int i,j,k;
int n = G.n;
int A[MaxVertices][MaxVertices];
for(i=0; i<n; i++) //初始化A数组和path数组,path数组保存着两点间的最短路径
{
for(j=0; j<n; j++)
{
A[i][j] = G.arcs[i][j];
path[i