Pagini recente » Cod sursa (job #3289169) | Cod sursa (job #3127192) | Cod sursa (job #659139) | Cod sursa (job #763751) | Cod sursa (job #702296)
Cod sursa(job #702296)
#include<stdio.h>
FILE *fin, *fout;
long c[20000][20000];
long n,m,x,y,v;
int citire()
{
long i,j;
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)
c[j][i]=c[i][j]=32768;
while(m!=0)
{
fscanf(fin,"%d%d%d",&x,&y,&v);
c[x][y]=v;
m--;
}
}
int parcurgDijkstra()
{
long i,j,k;
long min,vfmin;
long viz[50000],p[50000];
long nod[50000];
for(i=1;i<=n;i++)
{
p[i]=1;
viz[i]=c[1][i];
}
p[1]=0;
nod[1]=1;
for(i=1;i<n;i++)
{
min=32767;
for(j=1;j<=n;j++)
if(nod[j]==0 && min>viz[j])
{
min=viz[j];
vfmin=j;
}
nod[vfmin]=1;
for(j=1;j<=n;j++)
if(nod[j]==0 && viz[j]>min+c[vfmin][j])
{
p[j]=vfmin;
viz[j]=min+c[vfmin][j];
}
}
for(i=2;i<=n;i++)
{
if(viz[i]==32768)
fprintf(fout,"%d ",0);
else
fprintf(fout,"%d ",viz[i]);
}
}
main()
{
fin=fopen("dijkstra.in","r");
fout=fopen("dijkstra.out","w");
citire();
parcurgDijkstra();
fclose(fin);
fclose(fout);
}