floyd
#include <iostream>
#include <algorithm>
#include <limits.h>
using namespace std;
const int N=100;
int map[N][N];
void init()
{
for(int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
map[i][j]=9999;
}
}
}
void floyd(int n)
{
int i,j,k;
for(int k=0;k<n;k++)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i!=j)
map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
}
}
}
}
void PMap(int n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<map[i][j]<<" ";
}
cout<<endl;
}
}
int main()
{
int n,v;
init();
cout<<"请输入顶点数和边数:"<<endl;
cin>>n>>v;
PMap(n);
int key1,key2,cost;
for(int i=0;i<v;i++)
{
cin>>key1>>key2>>cost;
map[key1][key2]=map[key2][key1]=cost;
}
cout<<"input:"<<endl;
PMap(n);
floyd(n);
cout<<"AA:"<<endl;
PMap(n);
return 0;
}