Pagini recente » Cod sursa (job #973891) | Cod sursa (job #482391) | Cod sursa (job #860852) | Cod sursa (job #1334879) | Cod sursa (job #185750)
Cod sursa(job #185750)
#include <stdio.h>
#include <set>
#include <vector>
using namespace std;
vector <pair <long, long> > g[50001];
set <pair <long, long> > thingy;
long n, m, i, a, b, c, nod, cost_, cost[50001];
int main()
{
freopen ("dijkstra.in", "rt", stdin);
freopen ("dijkstra.out", "wt", stdout);
scanf("%ld %ld", &n, &m);
for (i = 1; i <= m; ++i)
{
scanf("%ld %ld %ld", &a, &b, &c);
g[a].push_back(make_pair(b, c));
g[b].push_back(make_pair(a, c));
}
for (i = 1; i <= n; ++i)
cost[i] = 2147000000;
thingy.insert(make_pair(0, 1));
cost[1] = 0;
while (!thingy.empty())
{
set <pair <long, long> >::iterator it;
it = thingy.begin();
nod = it -> second;
cost_ = it -> first;
for (vector <pair <long, long> >::iterator it = g[nod].begin(); it < g[nod].end(); ++it)
{
if (cost[nod] + (*it).second < cost[(*it).first])
{
cost[(*it).first] = cost[nod] + (*it).second;
thingy.insert(make_pair((*it).second, (*it).first));
}
}
thingy.erase(it);
}
for (i = 2; i <= n; ++i)
printf("%ld ", cost[i]);
printf("\n");
return 0;
}