#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
int D[100][100];
int n,i,j,k;
cout<<"请输入邻接矩阵的维数"<<endl;
cin>>n;
for(i=1;i<=n;i++)//初始化
D[i][i]=0;
cout<<"请输入邻接矩阵的权值"<<endl;
cout<<"表示无穷大时,请输入100000000"<<endl;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>D[i][j];
for(k=1;k<=n;k++)//控制各个点有没有经过点k
for(i=1;i<=n;i++)//控制行循环
for(j=1;j<=n;j++)//控制列循环
D[i][j]=( D[i][j]>(D[i][k]+D[k][j])?(D[i][k]+D[k][j]):D[i][j] );//比较原来的距离与经过点k的距离
//输出整个矩阵
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<D[i][j]<<" ";
cout<<endl;
}
return 0;
}