Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2751200)
#include <bits/stdc++.h>
using namespace std;
#define inf 1e9+2
vector<pair<int,int> > v[50001];
set <pair<int,int> > q;
int parc[50001],dp[50001];
int main()
{
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
int n,m,i,x,y,cost,nod1,nod;
cin>>n>>m;
for(i=1;i<=m;++i){
cin>>x>>y>>cost;
v[x].push_back(make_pair(y,cost));
}
for(i=1;i<=n;++i)
dp[i]=inf;
dp[1]=0;
q.insert(make_pair(0,1));
while(q.size()>0){
nod=q.begin()->second;
q.erase(q.begin());
if(parc[nod]==0){
parc[nod]=1;
for(i=0;i<v[nod].size();++i){
nod1=v[nod][i].first;
cost=v[nod][i].second;
if(dp[nod1]>dp[nod]+cost){
dp[nod1]=dp[nod]+cost;
q.insert(make_pair(dp[nod1],nod1));
}
}
}
}
for(i=2;i<=n;++i)
if(dp[i]==inf)
cout<<0<<" ";
else
cout<<dp[i]<<" ";
return 0;
}