求任意两点间的最短路径

求图中的任意两点间的最短距离,我们可以简单的n次调用Dijikstra方法,虽然算法的效率也是N的三次方,但是用Floyd算法更简洁,执行起来比前者更高效

void Floyed(A,C,n)

{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
 A[i][j]=C[i][j];
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
   for(j=1;j<=n;j++)
if(A[i][k]+A[k][j]<A[i][j])
A[i][j]=A[i][k]+A[k][j];
}

你可能感兴趣的:(c,算法)