Cod sursa(job #1573368)

Utilizator Vali_DeaconuVali Deaconu Vali_Deaconu Data 19 ianuarie 2016 17:31:28
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
# include <cstdio>
# define nmax 50002
# define mmax 250002
# define inf 2000000000
using namespace std;

struct muchie
{
  int x, y, c;
} G[mmax];
int D[nmax], M, N;

int main()
{
  int 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;
 }