hdu 1874 畅通工程续
Floyd 算法
#include <cstdio>
#include <cstring>
#include <algorithm>
#define INF 100000001
using namespace std;
int d[210][210];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m) == 2)
{
for(int i = 0; i <= n; i++)
for(int j = 0; j <= n; j++)
{
if(i == j)
d[i][j] = 0;
else
d[i][j] = INF;
}
for(int i = 0; i < m; i++)
{
int u, v, w;
scanf("%d%d%d",&u,&v,&w);
if(w < d[u][v])
d[u][v] = d[v][u] = w;
}
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]);
}
int x,y;
scanf("%d%d",&x,&y);
if(d[x][y] < INF)
printf("%d\n",d[x][y]);
else
puts("-1");
}
return 0;
}

浙公网安备 33010602011771号