Pagini recente » Cod sursa (job #2503719) | Cod sursa (job #379642) | Cod sursa (job #2925888) | Cod sursa (job #2929346) | Cod sursa (job #2243063)
#include <bits/stdc++.h>
using namespace std;
#define fi first /// vecin
#define se second /// cost
const int maxn = 5e4 + 5;
int n, m;
vector <pair <int, int> > v[maxn];
int d[maxn];
struct comp {
bool operator () (pair <int, int> a, pair <int, int> b) {
return a.fi > b.fi;
}
};
priority_queue <pair <int, int > , vector <pair <int , int> > , comp> pq;
const int maxnr = 0x3f3f3f3f;
int main() {
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
cin >> n >> m;
for(int i = 1;i <= m;i++) {
int a, b, c;
cin >> a >> b >> c;
v[a].push_back({b, c});
}
memset(d, 0x3f3f3f3f, sizeof d);
pq.push({0, 1});
while(!pq.empty()) {
pair <int, int> nod = pq.top();
pq.pop();
int cst = nod.fi, nd = nod.se;
if(d[nd] == maxnr) {
d[nd] = cst;
for(auto &x : v[nd]) {
if(d[x.fi] == maxnr) {
pq.push({cst + x.se, x.fi});
}
}
}
}
for(int i = 2;i <= n;i++)
if(d[i] != maxnr)
cout << d[i] << " ";
else
cout << "0 ";
return 0;
}