Pagini recente » Cod sursa (job #1333400) | Cod sursa (job #3272769) | Cod sursa (job #2127600) | Cod sursa (job #1217951) | Cod sursa (job #665117)
Cod sursa(job #665117)
#include <cstdio>
#include <climits>
FILE *f=fopen("dijkstra.in","r");
FILE *g=fopen("dijkstra.out","w");
int i,j,L[250001],col[250001],C[250001],d[250001],s[250001],n,m,min,nod;
int main()
{
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
if(d[i]==0)
d[i]=INT_MAX;
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d%d",&L[i],&col[i],&C[i]);
if(L[i]>col[i])
{
nod=L[i];
L[i]=col[i];
col[i]=nod;
}
if(L[i]==1)
d[col[i]]=C[i];
}
s[1]=1;
for(i=1;i<n;i++)
{
min=INT_MAX;
for(j=1;j<=n;j++)
if(s[j]==0)
if(d[j]<min)
{
min=d[j];
nod=j;
}
s[nod]=1;
for(j=1;j<=m;j++)
if(L[j]==nod)
{
if(min+C[j]<d[col[j]])
d[col[j]]=min+C[j];
}
else
if(col[j]==nod)
if(min+C[j]<d[L[j]])
d[L[j]]=min+C[j];
}
for(i=2;i<=n;i++)
if(d[i]>=INT_MAX)
fprintf(g,"0 ");
else
fprintf(g,"%d ",d[i]);
return 0;
}