Pagini recente » Cod sursa (job #2440088) | Cod sursa (job #2459143) | Cod sursa (job #1148847) | Cod sursa (job #2657877) | Cod sursa (job #2462370)
#include <bits/stdc++.h>
#define pp pair<int, int>
#define N 50005
using namespace std;
int d[N], n, m;
vector<pp> G[N];
auto comp = [](const pp &a, const pp &b) {return d[a.first] > d[b.first];};
priority_queue<pp, vector<pp>, decltype(comp)> Q(comp);
void dijkstra() {
int i, x, y;
for (i = 2; i <= n; i++) d[i] = INT_MAX;
Q.push(make_pair(1, 0));
while (!Q.empty()) {
pp p = Q.top();
Q.pop();
x = p.first;
if (d[x] < p.second) continue;
for (pp v : G[x]) {
y = v.first;
if (d[y] > d[x] + v.second) {
d[y] = d[x] + v.second;
Q.push(make_pair(y, d[y]));
}
}
}
}
int main() {
ifstream cin ("dijkstra.in");
ofstream cout ("dijkstra.out");
cin >> n >> m;
int x, y, c;
for (int i = 0; i < m; i++) {
cin >> x >> y >> c;
G[x].push_back(make_pair(y, c));
}
dijkstra();
for (int i = 2; i <= n; i++)
cout << (d[i] != INT_MAX ? d[i] : 0) << " ";
return 0;
}