Pagini recente » Cod sursa (job #457450) | Cod sursa (job #481130) | Cod sursa (job #16314) | Ghid de instalare pentru MinGW Developer Studio | Cod sursa (job #1168924)
type list=^cell;
cell=record
info,cost:longint;
pred:list;
end;
var lda:array[1..30005] of list;
q,rs:array[1..30005] of longint;
viz:array[1..30005] of byte;
i,n,m,head,tail,x,y:longint;
r:list;
bif,bof:array[1..1 shl 16] of char;
procedure add(x,y:longint; var r:list);
var p:list;
begin
new(p);
p^.info:=x;
p^.cost:=y;
p^.pred:=r;
r:=p;
end;
begin
assign(input,'sate.in');
assign(output,'sate.out');
reset(input);
rewrite(output);
settextbuf(input,bif);
settextbuf(output,bof);
readln(n,m,x,y);
for i:=1 to m do
begin
readln(head,tail,rs[1]);
add(tail,rs[1],lda[head]);
add(head,rs[1],lda[tail]);
end;
for i:=1 to n do
rs[i]:=1 shl 30;
head:=1; tail:=1; viz[x]:=1; q[1]:=x; rs[x]:=0;
while head<=tail do
begin
r:=lda[q[head]];
while r<>nil do
begin
if viz[r^.info]=0 then begin
inc(tail);
q[tail]:=r^.info;
viz[r^.info]:=1;
if q[head]<q[tail] then rs[q[tail]]:=rs[q[head]]+r^.cost
else rs[q[tail]]:=rs[q[head]]-r^.cost;
end;
r:=r^.pred;
end;
inc(head);
end;
writeln(rs[y]);
close(input);
close(output);
{Totusi este trist in lume}
end.