Cod sursa(job #1581705)

Utilizator aetherAlexandra Vanca aether Data 27 ianuarie 2016 03:11:24
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<cstdio>

long n,m,x,y;
long c[30001];
long dist[30001];

struct muchie
  {long x,y;
   long d;
  };
muchie l[100101];

void parcurgere()
{long i,p,u;
long aux;
c[1]=x;
dist[x]=0;
p=u=1;
while(p<=u && dist[y]==0)
  {aux=c[p];
   p++;
   for(i=1;i<=m && dist[y]==0;i++)
     if(l[i].x==aux &&  dist[l[i].y]==0)
                {u++;
                 c[u]=l[i].y;
                 dist[l[i].y]=dist[aux]+l[i].d;
                }

       else if(l[i].y==aux && dist[l[i].x]==0)
                {u++;
                 c[u]=l[i].x;
                 dist[l[i].x]=dist[aux]-l[i].d;
                }
  }
printf("%ld",dist[y]);
}

int main()
{long i;
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%ld%ld%ld%ld",&n,&m,&x,&y);
for( i=1;i<=m;i++)
  scanf("%ld%ld%ld",&l[i].x,&l[i].y,&l[i].d);
parcurgere();
return 0;
}