Cod sursa(job #548022)

Utilizator paul992Cirstean Paul paul992 Data 6 martie 2011 22:22:37
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<stdio.h>
const int pinf=0x3f3f3f3f;

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

long d[500001],i,n,m,ok;


void read(int prim)
{
scanf("%ld %ld", &n, &m);

 for(i=1;i<=m;i++)
   {
    scanf("%ld %ld %ld", &G[i].x, &G[i].y, &G[i].c);

    if(G[i].x==prim) 
		d[G[i].y]=G[i].c;
   }	
}

void solve(int prim)
{
for(i=1;i<=n;i++)
	if(d[i]==0) 
		d[i]=pinf;

 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=1;i<=n;i++)
  if(i!=prim)
  if(d[i]!=pinf) 
	  printf("%ld ", d[i]);
  else 
	  printf("0 ");
}

int main()
{
 freopen("dijkstra.in","r",stdin);
 freopen("dijkstra.out","w",stdout);
 read(1);
 solve(1);


 return 0;
}