/*dijkstra*/
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
const int maxn = 1005;
const int INF = 1e9;
int m, n;
int g[maxn][maxn], dis[maxn];
bool vis[maxn];
void init()
{
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
if (i == j)
g[i][j] = 0;
else
g[i][j] = INF;
}
}
return;
}
void dijkstra()
{
for (int i = 1; i <= n; ++i)
dis[i] = INF;
dis[1] = 0;
memset(vis, 0, sizeof(vis));
for (int i = 1; i <= n; ++i) {
int mark = -1, mindis = INF;
for (int j = 1; j <= n; ++j) {
if (!vis[j] && dis[j] < mindis) {
mindis = dis[j];
mark = j;
}
}
vis[mark] = 1;
for (int j = 1; j <= n; ++j) {
if (!vis[j]) {
dis[j] = min(dis[j], dis[mark] + g[mark][j]);
}
}
}
}
int main()
{
while (cin >> m >> n) {
init();
int a, b, c;
for (int i = 0; i < m; ++i) {
cin >> a >> b >> c;
g[a][b] = g[b][a] = min(g[a][b], c);
}
dijkstra();
cout << dis[n] << endl;
}
return 0;
}
POJ2387 Til the Cows Come Home
最新推荐文章于 2020-07-14 23:32:51 发布