Pagini recente » Cod sursa (job #1866586) | Cod sursa (job #1859494) | Cod sursa (job #96042) | Cod sursa (job #3274611) | Cod sursa (job #964061)
Cod sursa(job #964061)
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
#define A 999999999
int n, m;
vector<pair<int, int> > v[50000];
int a[50000];
priority_queue<pair<int, int> > q;
int main() {
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
cin >> n >> m;
for (int i = 0; i < n; i++) {
a[i] = A;
}
for (int i = 0; i < m; i++) {
int a, b, c;
cin >> a >> b >> c;
a--; b--;
v[a].push_back(make_pair(b, c));
}
a[0] = 0;
q.push(make_pair(0, 0));
while (!q.empty()) {
pair<int, int> s = q.top();
q.pop();
for (int i = 0; i < v[s.second].size(); i++) {
pair<int, int> u = v[s.second][i];
if (a[u.first] > a[s.second]+u.second) {
a[u.first] = a[s.second]+u.second;
q.push(make_pair(-a[u.first], u.first));
}
}
}
for (int i = 1; i < n; i++) {
cout << (a[i] == A ? 0 : a[i]) << " ";
}
cout << endl;
}