Pagini recente » Cod sursa (job #1421643) | Cod sursa (job #2683480) | Cod sursa (job #2446043) | Cod sursa (job #96089) | Cod sursa (job #964051)
Cod sursa(job #964051)
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
#define A 999999999
int n, m;
vector<pair<int, int> > v[50000];
int a[50000];
int t[50000];
int f[50000];
priority_queue<pair<int, int> > q;
int main() {
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();
if (f[s.second]) continue;
f[s.second] = 1;
t[s.second] = a[s.second];
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 << t[i] << " ";
}
cout << endl;
}