Pagini recente » Cod sursa (job #218933) | Cod sursa (job #546593) | Cod sursa (job #898944) | Cod sursa (job #474788) | Cod sursa (job #1401238)
#include <bits\stdc++.h>
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define oo 1<<30
#define N 50005
using namespace std;
vector<pii>v[N];
priority_queue<pii, vector<pii>, greater<pii>>q;
bitset<N>inq;
int d[N], n, m, x, y, nod, c, i;
int main()
{
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
scanf("%d%d", &n, &m);
for(; m; m--)
{
scanf("%d%d%d", &x, &y, &c);
v[x].pb(mp(y, c));
v[y].pb(mp(x, c));
}
for(i = 2; i <= n; i++)
d[i] = oo;
q.push(mp(0, 1));
inq[1] = 1;
while(q.size())
{
nod = q.top().second;
inq[nod] = 0;
q.pop();
for(auto it : v[nod])
{
if(d[it.first] > d[nod] + it.second)
{
d[it.first] = d[nod] + it.second;
if(!inq[it.first])
q.push(make_pair(d[it.first], it.first));
}
}
}
for(i = 2; i <= n; i++)
d[i] == oo ? printf("0 ") : printf("%d ", d[i]);
return 0;
}