Pagini recente » Cod sursa (job #2528114) | Cod sursa (job #1922919) | Cod sursa (job #1653502) | Cod sursa (job #431676) | Cod sursa (job #211547)
Cod sursa(job #211547)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("dijstra.in");
ofstream fout("dijstra.out");
int d[50000],n,m,viz[50000],t[50000],vi;
struct nod{
int info;
int cost;
nod *urm;
};
nod *st[50001];
void add(int x,int y,int c1){
nod *q=new nod;
q->info=y;
q->cost=c1;
q->urm=st[x];
st[x]=q;
}
int minim(int a,int b){
return (a<b)?a:b;
}
void dj(){
vi=1;
int dr=n-1,min=vi,min1=250001;
for (int i=0;i<=n;i++)
d[i]=250001;
d[vi]=0;
viz[vi]=1;
t[vi]=0;
while(dr!=0){
for (int i=min;i<=n;i++)
if (viz[i]!=0)
for (nod *q=st[i];q;q=q->urm)
if (d[q->info]==250001||(d[q->info]>d[i]+q->cost)){
d[q->info]=d[i]+q->cost;
t[q->info]=i;
if(viz[q->info]==0){
viz[q->info]=1;
}
if (i>min&&i<min1)
min1=i;
}
min=min1;
min1=250001;
dr--;
}
}
void citire(){
int x,y,k;
fin>>n>>m;
for (int i=1;i<=m;i++){
fin>>x>>y>>k;
add(x,y,k);
add(y,x,k);
}
}
void afis(){
for (int i=2;i<=n;i++)
if (d[i]==250001)
fout<<0<<" ";
else
fout<<d[i]<<" ";
fout<<"\n";
}
main(){
citire();
dj();
afis();
fin.close();
fout.close();
return 0;
}