Pagini recente » Cod sursa (job #1206033) | Cod sursa (job #1660170) | Cod sursa (job #2400808) | Cod sursa (job #1817877) | Cod sursa (job #3256799)
#include <bits/stdc++.h>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n, m;
int dist[50005];
vector<pair<int, int>> g[50005];
int main() {
in >> n >> m;
for(int i = 1; i <= m; i++) {
int u, v, w; in >> u >> v >> w;
g[u].push_back({v, w});
}
for(int i = 1; i <= n; i++)
dist[i] = 1e9;
set<pair<int, int>> st;
st.insert({0, 1});
dist[1] = 0;
while(!st.empty()) {
int node = st.begin()->second;
st.erase(st.begin());
for(auto elem : g[node]) {
int nxt = elem.first;
int weight = elem.second;
if(dist[nxt] > dist[node] + weight) {
st.erase({dist[nxt], nxt});
st.insert({dist[node] + weight, nxt});
dist[nxt] = dist[node] + weight;
}
}
}
for(int i = 1; i <= n; i++)
if(dist[i] == 1e9)
dist[i] = 0;
for(int i = 2; i <= n; i++)
out << dist[i] << ' ';
out << '\n';
return 0;
}