#include<iostream>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int maxn=10000000;
int n,m,a[260][260],dist[260][260];
int w=maxn;
void init()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
}
void readdata()
{
memset(dist,7,sizeof(dist));
memset(a,7,sizeof(a));
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,z;
cin>>x>>y>>z;
a[x][y]=z;a[y][x]=z;
dist[y][x]=z;dist[x][y]=z;
}
for(int i=1;i<=n;i++)
{
dist[i][i]=0;
}
}
void floyd()
{
for(int k=1;k<=n;k++)
{
for(int i=1;i<k;i++)
{
for(int j=i+1;j<k;j++)
{
w=min(w,a[i][k]+a[k][j]+dist[i][j]);
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);
}
}
}
}
void work()
{
floyd();
if(w<maxn)
cout<<w;
else cout<<"He will never come back.";
}
int main()
{
//init();
readdata();
work();
return 0;
}
心灵抚慰_floyd求最小环
最新推荐文章于 2019-09-25 14:25:00 发布