Pagini recente » Cod sursa (job #791385) | Cod sursa (job #130160) | Cod sursa (job #756838) | Cod sursa (job #1175014) | Cod sursa (job #354807)
Cod sursa(job #354807)
#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;
}