Pagini recente » Cod sursa (job #1443543) | Cod sursa (job #1073071) | Cod sursa (job #3003996) | Cod sursa (job #1140694) | Cod sursa (job #702509)
Cod sursa(job #702509)
#include<stdio.h>
FILE *f,*g;
int d[22001],min,n,m,c[22001][22001],M[22001];
int main()
{
f=fopen("dijkstra.in","r");
g=fopen("dijkstra.out","w");
fscanf(f,"%d%d",&n,&m);
register int i,j;
for(i=0;i<=n;++i)
for(j=0;j<=n;++j)
c[i][j]=999999999;
int a,b,e;
for(i=0;i<m;++i)
{
fscanf(f,"%d%d%d",&a,&b,&e);
c[a][b]=e;
}
M[1]=1;
for(i=1;i<=n;++i)
d[i]=c[1][i];
for(i=0;i<n-1;++i)
{
min=999999999;
for(j=1;j<=n;++j)
if(min>d[j] && M[j]==0)
{
min=d[j];
a=j;
}
M[a]=1;
for(j=1;j<=n;++j)
if(M[j]==0 && d[j]>d[a]+c[a][j])
d[j]=d[a]+c[a][j];
}
for(i=2;i<=n;++i)
{
if(d[i]!=999999999)
fprintf(g,"%d ",d[i]);
else
fprintf(g,"0 ");
}
fclose(f);
fclose(g);
}