Pagini recente » Cod sursa (job #1861201) | Cod sursa (job #2700267) | Cod sursa (job #861213) | Cod sursa (job #2333604) | Cod sursa (job #1365023)
#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define fs first
#define sc second
#define pob pop_back
#define pub push_back
#define eps 1E-7
#define sz(a) a.size()
#define count_one __builtin_popcount;
#define count_onell __builtin_popcountll;
#define fastIO ios_base::sync_with_stdio(false)
#define PI (acos(-1.0))
#define linf (1LL<<62)//>4e18
#define inf (0x7f7f7f7f)//>2e9
#define DEBUG 1
#ifdef DEBUG
#define D(x) x
#else
#define D(x)
#endif
#define MAXN 50001
FILE *in = fopen("dijkstra.in", "r");
FILE *out = fopen("dijkstra.out", "w");
int n, m, d[MAXN];
vector<int> vec[MAXN], cost[MAXN];
set<pair<int, int> > q;
int main()
{
int a, b, c;
fscanf(in, "%d%d", &n, &m);
for(int i = 0; i < m; ++i) {
fscanf(in, "%d%d%d", &a, &b, &c);
vec[a].pub(b);
cost[a].pub(c);
}
for(int i = 2; i <= n; ++i)
d[i] = inf;
q.insert(mp(0, 1));
while(!q.empty()) {
c = (*q.begin()).first; a = (*q.begin()).second;
q.erase(q.begin());
for(int i = 0; i < vec[a].size(); i++) {
if(d[vec[a][i]] > c + cost[a][i]) {
d[vec[a][i]] = c + cost[a][i];
q.insert(mp(d[vec[a][i]], vec[a][i]));
}
}
}
for(int i = 2; i <= n; ++i)
fprintf(out, "%d ", (d[i] == inf) ? 0 : d[i]);
return 0;
}