专题链接:https://vjudge.net/contest/351234#problem/B
思路
大水题,没有思路,直接套最简单的floyd模板即可
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdio>
using namespace std;
int N, M;
int m[101][101];
int ans = 0;
int inf =100000000;
int main()
{
while (cin >> N >> M)
{
int n = 0;
memset(m, 0, sizeof(m));
if (N == 0 && M == 0)
break;
ans = 0;
while (M--)
{
int i, j;
scanf("%d%d", &i, &j);
scanf("%d", &m[i][j]);
m[j][i] = m[i][j];
}
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
if (m[i][j] == 0)//初始化
m[i][j] = inf;
}
}
for (int k = 1; k <= N; k++)
{
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
m[i][j] = min(m[i][j], m[i][k] + m[k][j]);
}
}
}
printf("%d\n", m[1][N]);
}
return 0;
}