Pagini recente » Cod sursa (job #1861189) | Cod sursa (job #2600166) | Rating Muresan Andrei (andmury) | Cod sursa (job #865660) | Cod sursa (job #152859)
Cod sursa(job #152859)
var n,m,z,y,di:longint;
dir,dist:array[0..200048] of longint;
x,pas:array[0..30000] of longint;
i,j:longint;
a,b,c:array[1..100024] of longint;
procedure bf(z,y:longint);
var i,j,k:longint;
fol,dis:array[1..30000] of longint;
begin
k:=1;
fillchar(fol,sizeof(fol),0);
fillchar(dis,sizeof(dis),0);
pas[k]:=z;
fol[z]:=1;
dis[k]:=0;
i:=0;
while (I<k)and(fol[y]=0) do
begin
inc(I);
for j:=x[pas[i]]+1 to x[pas[i]+1] do
if fol[dir[j]]=0 then
begin
fol[dir[j]]:=k+1;
inc(K);
dis[k]:=dis[i]+dist[j];
pas[k]:=dir[j];
end;
end;
di:=dis[fol[y]];
end;
begin
assign(input,'sate.in');
assign(output,'sate.out');
reset(input);
rewrite(output);
readln(n,m,z,y);
for i:=1 to m do
begin
readln(a[i],b[i],c[i]);
inc(x[a[i]]);
inc(x[b[i]]);
end;
for i:=2 to n do
x[i]:=x[i-1]+x[i];
x[n+1]:=2*m;
for i:=1 to m do
begin
dir[x[a[i]]]:=b[i];
dist[x[a[i]]]:=c[i];
dec(x[a[i]]);
dir[x[b[i]]]:=a[i];
dist[x[b[i]]]:=-c[i];
dec(x[b[i]]);
end;
bf(z,y);
write(di);
close(input);
close(output);
end.