Cod sursa(job #282616)

Utilizator petrecgClinciu Glisca Petre petrecg Data 17 martie 2009 23:01:30
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <stdio.h>
long m,n,i,j,l,x,y,c,cost[1400][1400],val[5000],v[5000],min;
int main()
{freopen("dijkstra.in","r",stdin);freopen("dijkstra.out","w",stdout);
 fscanf(stdin,"%ld%ld",&n,&m);l=n;
 for(i=1;i<=m;i++){fscanf(stdin,"%ld%ld%ld",&x,&y,&c);cost[x][y]=c;}
 for(i=2;i<=n;i++)val[i]=100000000;
 for(i=1;i<=n;i++)
  {min=100000000;
   for(j=1;j<=n;j++)if(val[j]<min&&!v[j]){x=j;min=val[j];}
   v[x]=1;
   for(j=1;j<=n;j++)if(cost[x][j]&&cost[x][j]+val[x]<val[j])val[j]=cost[x][j]+val[x];
  }
 for(i=2;i<=n;i++)if(val[i]!=100000000)printf("%ld ",val[i]);else printf("0 ");
 fclose(stdout);fclose(stdin);
 return 0;
}