Cod sursa(job #535680)

Utilizator alexandru93moraru alexandru sebastian alexandru93 Data 17 februarie 2011 17:02:07
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream.h>
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
long long a[1000][1000],s[1000],min,max=99999999,d[1000],p[1000],n,m;
void citire(){
int i,j,x,y,c;
f>>n>>m;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
a[i][j]=max;
a[i][i]=0;
}
for(i=1;i<=m;i++)
f>>x>>y>>c,a[x][y]=c;
}

void dijkstra(){
int i,j,y,k;
s[1]=1;

for(i=1;i<=n;i++){
d[i]=a[1][i];
if(i!=1&&a[1][i]<max)
p[i]=1;
}

for(i=1;i<=n;i++){
for(j=1,min=max;j<=n;j++)
if(s[j]==0&&d[j]<min)
min=d[j],y=j;

s[y]=1;

for(k=1;k<=n;k++)
if(s[k]==0&&d[k]>d[y]+a[y][k])
p[k]=y,d[k]=d[y]+a[y][k];
}
}

void afis(){
int i;
for(i=2;i<=n;i++)
g<<d[i]<<' ';
g<<'\n';
}

int main(){
citire();
dijkstra();
afis();
g.close();
return 0;
}