Cod sursa(job #860601)

Utilizator suzanicaSuzanica Mihu suzanica Data 20 ianuarie 2013 14:14:00
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
# include <fstream>
# define nmax 50002
# define mmax 250002
# define inf 2000000000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

struct muchie
{
  long x,y,c;
} G[mmax];
long D[nmax],m,n;
 long i,x,y,c,ok;
int main()
{

 // freopen("dijkstra.in","r",stdin);
  //freopen("dijkstra.out","w",stdout);
  //scanf("%ld %ld",&N,&M);
  f>>n>>m;
  for (i=1;i<=m;++i)
  {
          f>>x>>y>>c;
   //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]);
    g<<D[i]<<" ";
    else
    g<<"0";
         //else printf("0 ");
  return 0;
 }