Pagini recente » Cod sursa (job #630814) | Cod sursa (job #1954620) | Cod sursa (job #874376) | Cod sursa (job #2476002) | Cod sursa (job #2947417)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("dijkstra.in");
ifstream g ("dijkstra.out");
#define cin f
#define cout g
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> heap;
vector<vector<pair<int, int>>> adj;
vector<int> dist;
void dijkstra(int start) {
dist[start] = 0;
heap.push({0, start});
while (!heap.empty()) {
int cost = heap.top().first;
int node = heap.top().second;
heap.pop();
for (auto p : adj[node]) {
int v_cost = p.first;
int v_node = p.second;
if (dist[v_node] > dist[node] + v_cost) {
dist[v_node] = dist[node] + v_cost;
heap.push({dist[v_node], v_node});
}
}
}
}
int main() {
int n, m;
cin >> n >> m;
adj.resize(n+1);
dist.resize(n+1, INT_MAX);
for (int i = 0; i < m; i++) {
int u, v, w;
cin >> u >> v >> w;
adj[u].push_back({w, v});
adj[v].push_back({w, u});
}
dijkstra(1);
for (int i = 2; i <= n; i++)
cout << dist[i] << ' ';
return 0;
}