Pagini recente » Cod sursa (job #1443235) | Cod sursa (job #825825) | Cod sursa (job #54076) | Cod sursa (job #3128262) | Cod sursa (job #2135254)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 5e4 + 5;
const int INF = 1e9 + 1;
priority_queue < pair < int, int >, vector<pair<int, int>>, greater<pair<int, int>> > pq;
vector < pair < int, int > > edge[N];
int dp[N];
int main(){
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
int n, m;
scanf("%d %d", &n, &m);
for(int i = 1;i <= m;i++){
int x, y, w;
scanf("%d %d %d", &x, &y, &w);
edge[x].push_back({y, w});
edge[y].push_back({x, w});
}
for(int i = 1;i <= n;i++){
dp[i] = INF;
}
dp[1] = 0;
pq.push({0, 1});
while(pq.empty() == false){
int node = pq.top().second;
pq.pop();
for(auto &it : edge[node]){
if(dp[it.first] > dp[node] + it.second){
dp[it.first] = dp[node] + it.second;
pq.push({dp[it.first], it.first});
}
}
}
for(int i = 2;i <= n;i++){
printf("%d ", dp[i] == INF ? 0 : dp[i]);
}
return 0;
}