Pagini recente » Cod sursa (job #733671) | Cod sursa (job #1507238) | Cod sursa (job #115121) | Cod sursa (job #108639) | Cod sursa (job #2833155)
#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] = d - w;
pq.emplace(dp[v], v);
}
}
for(int i = 2; i <= n; i++)
cout << (dp[i] == inf ? 0 : -dp[i]) << " ";
return 0;
}