Pagini recente » Cod sursa (job #256260) | Cod sursa (job #2416018) | Probleme de Taietura | Cod sursa (job #426510) | Cod sursa (job #2203968)
#include <bits/stdc++.h>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n,m;
vector <pair<int,int> > v[50005];
int cost[50005];
priority_queue <pair<int,int> ,vector<pair<int,int> >,greater<pair<int,int> > > H;
void djikstra(int nod) {
int nou,c,pana_aici;
H.push(make_pair(0,nod));
cost[nod]=0;
while(H.size()) {
nod = H.top().second;
pana_aici=H.top().first;
H.pop();
//if(pana_aici>cost[nod])
// continue;
for(auto vecin:v[nod]) {
nou=vecin.first;
c=vecin.second;
if(cost[nou]>c+cost[nod]) {
cost[nou]=c+cost[nod];
H.push(make_pair(cost[nou],nou));
}
}
}
}
int main()
{
int i,x,y,c;
in>>n>>m;
for(i=1;i<=n;i++) {
cost[i]=(1<<30);
}
for(int i=1;i<=m;i++) {
in>>x>>y>>c;
v[x].push_back(make_pair(y,c));
}
djikstra(1);
for(i=2;i<=n;i++) {
if(cost[i]!=(1<<30))
out<<cost[i]<<" ";
else
out<<0<<" ";
}
return 0;
}