Pagini recente » Cod sursa (job #3293298) | Cod sursa (job #919646) | Cod sursa (job #1510612) | Cod sursa (job #1360235) | Cod sursa (job #1741211)
#include<fstream>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int n,m,x,y,d[30001],v[30001],coada[30001];
struct nod{
int inf,dist;
nod *urm;
}*L[30001];
void adaugsf(int val,int d,nod *&vf){
nod *q;
q=new nod;
q->inf=val;
q->dist=d;
q->urm=vf;
vf=q;
}
void cit(){
int i,a,b,c;
fin>>n>>m>>x>>y;
for (i=1;i<=n;i++)
L[i]=0;
for (i=1;i<=m;i++)
{
fin>>a>>b>>c;
adaugsf(b,c,L[a]);
adaugsf(a,c,L[b]);
}
fin.close();
}
void bfs(){
nod *q;
int p,u,curent;
p=u=1;
coada[u]=x;
v[x]=1;
while(p<=u){
curent=coada[p];
q=L[curent];
while(q!=0){
if (v[q->inf]==0){
v[q->inf]=1;
if (q->inf<curent) d[q->inf]=d[curent]-q->dist;
else
d[q->inf]=d[curent]+q->dist;
u++;
coada[u]=q->inf;
}
q=q->urm;
}
p++;
}
}
int main(){
cit();
bfs();
if (d[y]<0) d[y]=d[y]*(-1);
fout<<d[y];
fout.close();
return 0;
}