Pagini recente » Cod sursa (job #2186274) | Cod sursa (job #2462693) | Cod sursa (job #1986775) | Profil StarGold2 | Cod sursa (job #487951)
Cod sursa(job #487951)
#include<stdio.h>
#define dim 10000
#define inf 90000
using namespace std;
char marc[dim];
int d[dim],pre[dim],cost[dim][dim],sum,x,y,i,n,m,j,vf,min;
int main()
{
FILE *f=fopen("dijkstra.in","r"), *g=fopen("dijkstra.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
cost[i][j]=cost[j][i]=inf;
for(i=1;i<=m;i++)
{fscanf(f,"%d%d%d",&x,&y,&sum);
cost[x][y]=sum;
}
for(i=1;i<=n;i++)
{d[i]=cost[1][i]; pre[i]=1;}
marc[1]=1; pre[1]=0;
for(i=1;i<=n;i++)
{
min=inf;
for(j=1;j<=n;j++)
if(!marc[j] && min>d[j])
{min=d[j];
vf=j;}
marc[vf]=1;
for(j=1;j<=n;j++)
if(!marc[j] && d[j]>min+cost[vf][j])
{pre[j]=vf;
d[j]=min+cost[vf][j];}
}
for(i=2;i<=n;i++)
if(d[i]!=inf) fprintf(g,"%d ",d[i]);
else fprintf(g,"0 ");
fprintf(g,"\n");
fclose(f);
fclose(g);
return 0;
}