Cod sursa(job #354312)

Utilizator PopaStefanPopa Stefan PopaStefan Data 7 octombrie 2009 18:49:39
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<fstream.h>

ifstream fin("sate.in");
ofstream fout("sate.out");

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

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


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

int main()
{fin>>n>>m>>x>>y;
for(int i=1;i<=n;i++)
  fin>>l[i].x>>l[i].y>>l[i].d;
parcurgere();
fin.close();
fout.close();
return 0;
}