Pagini recente » Cod sursa (job #1474095) | Info Oltenia 2019 Proba pe Echipe Clasele 9 - 10 | Cod sursa (job #366884) | Cod sursa (job #1173089) | Cod sursa (job #1414867)
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
using namespace std;
const int MAXN = 50005, MAXM = 250005;
const long long INF = 0x3f3f3f;
int N, M, d[MAXN];
vector<int> G[MAXN], C[MAXN];
set< pair<int,int> > T;
void solve() {
int i, j, k, val, x;
for (i = 2; i <= N; i++) d[i] = INF;
T.insert(make_pair(0, 1));
while (T.size() > 0) {
val = T.begin()->first, x = T.begin()->second;
T.erase(*T.begin());
for (i = 0; i < G[x].size(); i++) {
if (d[ G[x][i] ] > d[x] + C[x][i]) {
d[ G[x][i] ] = d[x] + C[x][i];
T.insert(make_pair(d[G[x][i]], G[x][i]));
}
}
}
}
int main() {
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
int i, a, b, c;
scanf("%d %d", &N, &M);
for (i = 1; i <= M; i++) {
scanf("%d %d %d", &a, &b, &c);
G[a].push_back(b);
C[a].push_back(c);
}
solve();
for (i = 2; i <= N; i++)
printf("%d ", d[i] == INF ? 0 : d[i]);
return 0;
}