#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int map[202][202];
void floyd(int n)
{
for(int k=1;k<=n;k++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(map[i][k]+map[k][j]<map[i][j])map[i][j]=map[j][i]=map[i][k]+map[k][j];
}
}
}
}
int main()
{
int n,m,city1,city2,minute;//n is points ,m is ways
while(cin>>n>>m&&(n||m))
{
for(int i=1;i<202;i++)
{
for(int j=1;j<202;j++)map[i][j]=9999999;
map[i][i]=0;
}
for(int i=0;i<m;i++)
{
cin>>city1>>city2>>minute;
if(map[city1][city2]>minute)map[city1][city2]=map[city2][city1]=minute;
}
floyd(n);
cout<<map[n][1]<<endl;
}
}
floyd算法水题
最新推荐文章于 2019-04-27 16:11:05 发布