Pagini recente » Cod sursa (job #1340275) | Cod sursa (job #2765132) | Cod sursa (job #380333) | Cod sursa (job #1450506) | Cod sursa (job #3329743)
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 1e15;
struct Edge {
int to, cost;
};
signed main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int N,M; cin>>N>>M;
vector<vector<Edge>> g(N+1);
for(int i=0;i<M;i++){
int A,B,C; cin>>A>>B>>C;
g[A].push_back({B,C});
}
vector<int> dist(N+1,INF);
dist[1]=0;
priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
pq.push({0,1});
while(!pq.empty()){
auto [d,u]=pq.top(); pq.pop();
if(d!=dist[u]) continue;
for(auto e:g[u]){
if(dist[e.to]>dist[u]+e.cost){
dist[e.to]=dist[u]+e.cost;
pq.push({dist[e.to],e.to});
}
}
}
for(int i=2;i<=N;i++){
if(dist[i]==INF) cout<<0<<" ";
else cout<<dist[i]<<" ";
}
cout<<"\n";
return 0;
}