Pagini recente » Cod sursa (job #345683) | Cod sursa (job #485586) | Cod sursa (job #3348533) | Cod sursa (job #1334835) | Cod sursa (job #3325329)
#include <iostream>
#include <queue>
#include <vector>
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int s, n, m, x, y, c, nod, vecin, cost;
int d[10000005], viz[10000005];
const int N_MAX = 100005;
priority_queue<pair<int, int>> PQ;
vector <pair<int, int>> L[10000005];
int main() {
fin >> n >> m;
int s = 1;
for (int i = 1; i <= m; i++) {
fin >> x >> y >> c;
L[x].push_back({y, c});
}
for (int i = 1; i <= n; i++) {
d[i] = INT_MAX;
}
d[s] = 0;
PQ.push({-d[s], s});
while (!PQ.empty()) {
nod = PQ.top().second;
PQ.pop();
if (viz[nod] == 1) continue;
viz[nod] = 1;
for (auto muchie : L[nod]) {
vecin = muchie.first;
cost = muchie.second;
if (d[vecin] > d[nod] + cost && d[nod] != INT_MAX) {
d[vecin] = d[nod] + cost;
PQ.push({-d[vecin], vecin});
}
}
}
for (int i = 2; i <= n; i++) {
if (d[i] == INT_MAX) {
fout << 0 << " ";
} else {
fout << d[i] << " ";
}
}
return 0;
}