Cod sursa(job #281654)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 15 martie 2009 16:28:04
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<stdio.h>
long n,m,i,a[50005],b[50005],v[50005],d[50005],ve,min,nod,viz[50005];
int main()
{
 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",&a[i],&b[i],&v[i]);

 for(i=1;i<=n;++i)d[i]=2147000000;
 d[1]=0;
 ve=0;
 while(ve<n)
  {min=2147100000;
   nod=0;
   for(i=1;i<=n;++i)if(d[i]<min&&!viz[i])min=d[i],nod=i;
   viz[nod]=1;
   ++ve;
   for(i=1;i<=m;++i)
      if(a[i]==nod)
        if(!viz[b[i]])
          if(v[i]+d[nod]<d[b[i]])d[b[i]]=v[i]+d[nod];
  }
 for(i=2;i<=n;++i)
    printf("%ld ",d[i]);
 printf("\n");
 return 0;
}