Pagini recente » Cod sursa (job #2126916) | Cod sursa (job #2245312) | Cod sursa (job #3137509) | Cod sursa (job #1198830) | Cod sursa (job #2833159)
#include <bits/stdc++.h>
using namespace std;
#ifdef INFOARENA
#define cin fin
#define cout fout
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
#endif // INFOARENA
const int N = 5e4;
using ll = long long;
const ll inf = 1e18;
vector <pair <int, int>> g[N + 5];
ll dp[N + 5];
int main()
{
int n, m, u, v, w;
cin >> n >> m;
for(int i = 1; i <= m; i++)
cin >> u >> v >> w,
g[u].push_back({v, w});
priority_queue <pair <ll, int>> pq;
pq.push({0, 1});
for(int i = 2; i <= n; i++) dp[i] = inf;
while(!pq.empty()) {
auto [d, u] = pq.top(); pq.pop();
if(d != -dp[u]) continue;
for(auto [v, w] : g[u])
if(w - d < dp[v]) {
dp[v] = w - d;
pq.emplace(-dp[v], v);
}
}
for(int i = 2; i <= n; i++)
cout << (dp[i] == inf ? 0 : dp[i]) << " ";
return 0;
}