Pagini recente » Cod sursa (job #2067906) | Cod sursa (job #3156880) | Cod sursa (job #2445101) | Cod sursa (job #2336617) | Cod sursa (job #2980184)
#include <bits/stdc++.h>
const int NMAX = 2e5 + 5, INF = 1e9;
int n, m, dist[NMAX], f[NMAX];
std :: vector < std :: pair < int, int > > G[NMAX];
std :: priority_queue < std :: pair < int, int > > heap;
std :: ifstream fin("dijkstra.in");
std :: ofstream fout("dijkstra.out");
int main() {
fin >> n >> m;
for (int i = 0, u, v, c; i < m; ++ i) {
fin >> u >> v >> c;
-- u, -- v;
G[u].push_back({c, v});
}
for (int i = 0; i < n; ++ i)
dist[i] = INF;
dist[0] = 0;
heap.push({-0, 0});
while (!heap.empty()) {
int u = heap.top().second;
heap.pop();
if (f[u] == false) {
f[u] = true;
for (int i = 0; i < G[u].size(); ++ i) {
int cost = G[u][i].first, v = G[u][i].second;
if (dist[v] > dist[u] + cost) {
dist[v] = dist[u] + cost;
heap.push({-dist[v], v});
}
}
}
}
for (int i = 1; i < n; ++ i)
if (dist[i] >= INF)
fout << "0" << " ";
else
fout << dist[i] << " ";
return 0;
}