Pagini recente » Cod sursa (job #3274848) | Cod sursa (job #1570303) | Cod sursa (job #818028) | Cod sursa (job #301863) | Cod sursa (job #2378093)
#include <bits/stdc++.h>
#define pii pair<int,int>
#define vii vector<pii>
#define S second
#define F first
#define INF 0xfffffff
#define MAXN 50010
using namespace std;
int n,m;
int Vl[MAXN];
vii A[MAXN];
void Dijkstra(int s){
priority_queue <pii,vii,greater<pii> > pq;
pq.push({0,s});
for(int i=1;i<=n;i++)
if(s!=i)
Vl[i]=INF;
else Vl[i]=0;
while(!pq.empty()){
pii c;
c.F=pq.top().S;
c.S=pq.top().F;
pq.pop();
if(c.S>Vl[c.F])continue;
for(int i=0;i<A[c.F].size();i++){
if(Vl[c.F]+A[c.F][i].S<Vl[A[c.F][i].F]){
Vl[A[c.F][i].F]=Vl[c.F]+A[c.F][i].S;
pq.push({Vl[c.F]+A[c.F][i].S,A[c.F][i].F});
}
}
}
}
int main(){
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
cin>>n>>m;
for(int i=0;i<m;i++){
int a,b,d;
cin>>a>>b>>d;
A[a].push_back({b,d});
}
Dijkstra(1);
for(int i=2;i<=n;i++){
if(Vl[i]!=INF)
cout<<Vl[i]<<' ';
else cout<<"0 ";
}
return 0;
}