Pagini recente » Cod sursa (job #1276806) | Istoria paginii runda/eusebiu_oji_2006si2007_cls11-12/clasament | Cod sursa (job #2094237) | Cod sursa (job #2210619) | Cod sursa (job #2646494)
#include <bits/stdc++.h>
using namespace std;
const int DIM = 50000 + 5;
vector < pair < int, int > > a[DIM];
vector < int > d(DIM, 2e9);
priority_queue < pair < int, int >, vector < pair < int, int > >, greater < pair < int, int > > > pq;
bool f[DIM];
void dijkstra(int k, int n)
{
d[1] = 0;
pq.push({d[1], 1});
while(!pq.empty()) {
int k = pq.top().second;
pq.pop();
if(f[k] == true) continue;
f[k] ^= 1;
for(auto v : a[k]) {
int to = v.first;
int len = v.second;
if(d[to] > d[k] + len) {
d[to] = d[k] + len;
pq.push({d[to], to});
}
}
}
for(int i = 2; i <= n; ++i) {
if(d[i] == 2e9) printf("0 ");
else printf("%d ", d[i]);
}
}
int main()
{
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
int n, m;
scanf("%d%d", &n, &m);
for(int i = 1; i <= m; ++i) {
int x, y, w;
scanf("%d%d%d", &x, &y, &w);
a[x].push_back({y, w});
}
dijkstra(1, n);
return 0;
}