program satele;
var a:array[1..500] of longint;
d:array[0..500,0..500] of longint;
k,n,i,m,xc,yc,xx,yy,l,j:longint;
f,g:text;
st:boolean;
begin
assign(f,'sate.in'); assign(g,'sate.out');
reset(f); rewrite(g);
read(f,n,m,xc,yc);
j:=0;
for i:=1 to m do
begin
read(f,xx,yy,d[xx,yy]);
d[yy,xx]:=d[xx,yy];
end;
repeat
st:=true;
for i:=1 to n do
begin
l:=0;
for j:=1 to n do
if d[i,j]<>0 then
begin
l:=l+1;
a[l]:=j;
for k:=1 to l-1 do
if (d[a[k],j]=0) or (d[j,a[k]]=0)then
begin
if ((a[k]>i) and (j>i)) or ((a[k]<i) and (j<i)) then
d[a[k],j]:=d[i,j]-d[i,a[k]] else d[a[k],j]:=d[i,j]+d[i,a[k]];
if d[a[k],j]<0 then d[a[k],j]:=d[a[k],j]*(-1); st:=false;
d[j,a[k]]:=d[a[k],j];
end;
end;
end;
until st;
if xc>yc then writeln(g,d[xc,yc]) else writeln(g,d[yc,xc]);
close(f); close(g);
end.