#include<bits/stdc++.h>
using namespace std;
#define M 205
#define inf 0x7fffffff
int Map[M][M], vis[M], dis[M];
int main(){
int n, m, a, b, d, s, t, next, Min;
while(scanf("%d %d", &n, &m) == 2)
{
for(int i = 0; i < M; i++)
{
vis[i] = 1, dis[i] = inf;
for(int j = 0; j < M; j++) Map[i][j] = inf;
}
for(int i = 0; i < m; i++){
scanf("%d %d %d", &a, &b, &d);
Map[a][b] = min(Map[a][b], d);
Map[b][a] = Map[a][b];
}
scanf("%d %d", &s, &t);
vis[s] = 0, dis[s] = 0;
while(s != t){
Min = inf;
for(int i = 0; i < n; i++)
{
if(!vis[i]) continue;
if(Map[s][i] != inf) dis[i] = min(dis[i], dis[s]+Map[s][i]);
if(dis[i] < Min) Min = dis[i], next = i;
}
if(Min == inf) break;
s = next, vis[next] = 0;
}
printf("%d\n", dis[t] == inf ? -1 : dis[t]);
}
return 0;
}
hdu 1874 畅通工程续
最新推荐文章于 2022-05-06 18:25:21 发布