Cod sursa(job #387132)

Utilizator miticaMitica mitica Data 26 ianuarie 2010 21:25:04
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
# include <stdio.h>   
# define nmax 50005
# define mmax 250005
# define inf 2000000005

struct muchie{
  long x,y,c;
} G[mmax];

long D[nmax],M,N;

int main()
{
  long i,x,y,c,ok;
  freopen("dijkstra.in","r",stdin);
  freopen("dijkstra.out","w",stdout);
  scanf("%ld %ld",&N,&M);
  for (i=1;i<=M;++i){
   scanf("%ld %ld %ld",&x,&y,&c);
   G[i].x=x; G[i].y=y; G[i].c=c;
   if (x==1) D[y]=c;
  }
  for (i=2;i<=N;++i)
    if (D[i]==0) D[i]=inf;
  do{
     ok=1;
     for (i=1;i<=M;++i)
       if (D[G[i].y]>D[G[i].x]+G[i].c) { D[G[i].y]=D[G[i].x]+G[i].c; ok=0;}
  }while (!ok);
  for (i=2;i<=N;++i)
   if (D[i]!=inf) printf("%ld ",D[i]);
	     else printf("0 ");
  return 0;
 }