#include <iostream>
#include <iomanip>
using namespace std;
const int INF=99;
const int n=4;
int D[n][n]={ 0, 1,INF, 4, //Floyd算法的邻接矩阵,主对角线元素为0
INF, 0, 9, 2,
3, 5, 0, 8,
INF,INF, 6, 0
};
int min(int x,int y)
{
return (x<y)?x:y;
}
void floyd()
{
for(int k=0;k<n;k++)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
D[i][j]=min(D[i][j],D[i][k]+D[k][j]);
}
}
}
}
void display()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++) cout<<setw(3)<<D[i][j];
cout<<endl;
}
cout<<endl;
}
int main()
{
floyd();
display();
return 0;
}
#include <iomanip>
using namespace std;
const int INF=99;
const int n=4;
int D[n][n]={ 0, 1,INF, 4, //Floyd算法的邻接矩阵,主对角线元素为0
INF, 0, 9, 2,
3, 5, 0, 8,
INF,INF, 6, 0
};
int min(int x,int y)
{
return (x<y)?x:y;
}
void floyd()
{
for(int k=0;k<n;k++)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
D[i][j]=min(D[i][j],D[i][k]+D[k][j]);
}
}
}
}
void display()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++) cout<<setw(3)<<D[i][j];
cout<<endl;
}
cout<<endl;
}
int main()
{
floyd();
display();
return 0;
}