Pagini recente » Cod sursa (job #9066) | Cod sursa (job #2325041)
#include <fstream>
#include <vector>
#define INFINIT 250000*20000
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,y,x,c,d[50010],p,minim,nr,vecin,distanta,v[50010];
vector< pair<int,int> >L[250010];
int main(){
fin>>n>>m;
for(int i=1;i<=m;i++){
fin>>x>>y>>c;
L[x].push_back(make_pair(y, c));
}
d[1]=0;
for(int i=2;i<=n;i++){
d[i]=INFINIT;
}
for(;;){
minim=INFINIT;
for(int i=1;i<=n;i++){
if(v[i]==0 && d[i]<minim){
minim=d[i];
p=i;
}
}
if(minim==INFINIT){
break;
}
v[p] = 1;
for(int i=0;i<L[p].size();i++){
vecin=L[p][i].first;
distanta = L[p][i].second;
if(v[vecin] == 0 && d[vecin] > d[p] + distanta){
d[vecin] = d[p] + distanta;
}
}
}
for(int i=2;i<=n;i++){
if(d[i] != INFINIT){
fout<<d[i]<<" ";
}
else{
fout<<"0 ";
}
}
}