【程序】
#include <stdio.h>
#define N 105
void Floyd(int D[][N],int n)//Floyd算法
{
int i,j,k;
printf("----------------------1\n");
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
D[i][j]=D[i][j]<(D[i][k]+D[k][j])?D[i][j]:(D[i][k]+D[k][j]);
}
int main()
{
int D[N][N],n,i,j;
printf("顶点个数:");
scanf("%d",&n);
printf("顶点距离(距离在1~99,100表示无穷):\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&D[i][j]);
Floyd(D,n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d",D[i][j]);
printf("\n");
}
}