Pagini recente » Cod sursa (job #3253762) | Cod sursa (job #2566178) | Cod sursa (job #3159478) | Cod sursa (job #3216212) | Cod sursa (job #3213825)
#include <bits/stdc++.h>
#define NMAX 10001
#define INF 1e9
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
vector<pair<int, int>> vec[NMAX * 5];
int dp[NMAX * 5];
priority_queue<pair<int, int>> q;
int viz[NMAX * 5];
void dijkstra(int x){
q.push({0, x});
dp[x] = 0;
while(!q.empty()){
int nod = q.top().second;
q.pop();
if(viz[nod] == 0){
viz[nod] = 1;
for(auto w : vec[nod]){
if(!viz[w.second]){
if(dp[nod] + w.first < dp[w.second]){
dp[w.second] = dp[nod] + w.first;
q.push({-dp[w.second], w.second});
}
}
}
}
}
}
int main() {
int n;
int m;
in >> n >> m;
for(int i = 0;i < m;i++){
int a, b, cost;
in >> a >> b >> cost;
vec[a].push_back({cost, b});
}
for(int i = 0;i <= n;i++){
dp[i] = INF;
}
dijkstra(1);
for(int i = 2;i <= n;i++){
if(dp[i] == INF){
out << "0 ";
}
else out << dp[i] << ' ';
}
return 0;
}