Floyed算法
【思想】Floyed-Warshall 算法用來找出每對點之間的最短距離。它需要用鄰接矩陣來儲存邊,這個算法通過考慮最佳子路徑來 得到最佳路徑。 注意單 獨一條邊的路徑也不一定是最佳路徑。
for (i=1;i<=n;i++)
for (j=1;j<=n;j++) map[i][j]=INF;
for (i=1;i<=n;i++)
{
scanf("%d%d%d",&peo[i],&a,&b);
map[i][a]=1; map[a][i]=1;
map[i][b]=1; map[b][i]=1;
}
for (k=1;k<=n;k++)
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (i!=j && j!=k && i!=k)
if (map[i][j]>map[i][k]+map[k][j])
map[i][j]=map[i][k]+map[k][j];
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
if (a[i,k]=1)and (a[k,j]=1) then a[i,j]=1
{a[i,j]=1表示i可達j,a[i,j]=0表示i不可達j}