第2个回答 2012-08-10
#include<stdio.h>
#include<string.h>
const int MAX=100;
int g[MAX][MAX];
void floyd(int n)///弗洛易德算法
{
int i,j,k;
for(k=0;k<n;k++)
{
for(i=0;i<n;i++)
{
if(i==k)continue;
for(j=0;j<n;j++)
{
if(i==j||j==k)continue;
if(g[i][k]+g[k][j]<g[i][j])
g[i][j]=g[i][k]+g[k][j];
}
}
}
}
int main()
{
int i,j,n;
scanf("%d",&n);///输入顶点数
for(i=0;i<n;i++)///输入邻接矩阵
{
for(j=0;j<n;j++)
{
scanf("%d",&g[i][j]);
}
}
floyd(n);
return 0;
}本回答被网友采纳