Pagini recente » Cod sursa (job #1806866) | Cod sursa (job #613101) | Cod sursa (job #462570) | Cod sursa (job #2637155) | Cod sursa (job #855312)
Cod sursa(job #855312)
#include<cstdio>
#include<cstdlib>
int a[20005][20005],min,D[50005];
int n,m,viz[50005];
int pinf=2000000000;
void citire()
{
FILE *f=fopen("dijkstra.in","r");
int i,j,A,B,C;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
a[i][j]=a[j][i]=pinf;
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=m;i++)
{
fscanf(f,"%d %d %d",&A,&B,&C);
a[A][B]=C;
}
}
int main()
{
citire();
int i,k,poz;
viz[1]=1;
for(i=2;i<=n;i++)
D[i]=a[1][i];
for(k=1;k<=n-1;k++)
{
min=pinf;
for(i=2;i<=n;i++)
if(viz[i]==0)
if(D[i]<min)
{
min=D[i];
poz=i;
}
viz[poz]=1;
for(i=2;i<=n;i++)
if(viz[i]==0 && D[i]>D[poz]+a[poz][i])
D[i]=D[poz]+a[poz][i];
}
FILE *g=fopen("dijkstra.out","w");
for(i=2;i<=n;i++)
fprintf(g,"%d ",D[i]);
return 0;
}