Pagini recente » test_runda_razvan | Cod sursa (job #2181105) | Cod sursa (job #2625990) | Istoria paginii fmi-no-stress-4/solutii/peluzasud | Cod sursa (job #2071918)
#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e4 + 5;
struct at {
int fi, se;
bool operator < (const at &a) const {
return se > a.se;
}
};
const int inf = 1e9;
int N, M;
vector <at > v[maxn];
priority_queue <at> pq;
int d[maxn];
inline void dijkstra(int sursa) {
pq.push({1, 0});
for(int i = 1;i <= N;i++)
d[i] = inf;
while(!pq.empty()) {
at nod = pq.top();
pq.pop();
if(d[nod.fi] == inf) {
d[nod.fi] = nod.se;
for(auto x : v[nod.fi]) {
if(d[x.fi] == inf) {
pq.push({x.fi, nod.se + x.se});
}
}
}
}
}
int main() {
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
scanf("%d%d", &N, &M);
for(int i = 1;i <= M;i++) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
v[a].push_back({b, c});
}
dijkstra(1);
for(int i = 2;i <= N;i++)
if(d[i] == inf)
cout << "0 ";
else
cout << d[i] << " ";
return 0;
}