Cod sursa(job #354807)

Utilizator PopaStefanPopa Stefan PopaStefan Data 9 octombrie 2009 16:42:00
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream.h>
#define nmax 30001

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

int n,m,x,y,coada[nmax],d[nmax];

struct nod
   {int inf; //valoarea nodului respectiv
   int dist;
    nod *urm;  //adresa urmatorului nod din lista
   };
nod *l[nmax];

void citire()
{int i,m,xx,yy,dd;
fin>>n>>m>>x>>y;
for(i=1;i<=m;i++)
  {fin>>xx>>yy>>dd;
   nod *c;
   c=new nod;
   c->inf=yy;
   c->dist=dd;
   c->urm=l[xx];
   l[xx]=c;
   c=new nod;
   c->inf=xx;
   c->dist=dd;
   c->urm=l[yy];
   l[yy]=c;
  }
}

void parcurgere()
{int p,u,aux;
coada[1]=x;
d[x]=0;
p=u=1;
while(p<=u)
  {aux=coada[p];
   p++;
   for(nod *c=l[aux];c!=NULL ;c=c->urm)
     if(d[c->inf]==0)
      {u++;
       coada[u]=c->inf;
       if((c->inf)>=aux) d[c->inf]=(c->dist)+d[aux];
          else d[c->inf]=d[aux]-(c->dist);
      }
  }
fout<<d[y];
}

int main()
{citire();
parcurgere();
fin.close();
fout.close();
return 0;
}