Pagini recente » Cod sursa (job #2349131) | Cod sursa (job #2211809) | Cod sursa (job #101188) | Cod sursa (job #2133830) | Cod sursa (job #140381)
Cod sursa(job #140381)
type adresa=^nod;
nod= record
inf,dist:longint;
adr:adresa;
end;
var n,m,x,y,k,b,e:longint;
vc:array[1..30000]of adresa;
co:array[1..100000]of integer;
d:array[1..100000] of longint;
viz:array[1..30000]of integer;
q,p:adresa;
procedure citire;
var i,j,d:longint;
begin
assign(input,'sate.in');
reset(input);
readln(n,m,x,y);
for k:=1 to n do
vc[k]:=nil;
for k:=1 to m do
begin
read(i,j,d);
new(q);
q^.inf:=i;
q^.dist:=d;
q^.adr:=vc[j];
vc[j]:=q;
new(q);
q^.inf:=j;
q^.dist:=d;
q^.adr:=vc[i];
vc[i]:=q;
end;
close(input);
end;
procedure rezolva;
var ok:boolean;
begin
co[1]:=x;
ok:=true;
b:=0;
e:=1;
while ok do
begin
b:=b+1;
p:=vc[co[b]];
while(p<>nil)do
begin
if(viz[p^.inf]=0)then
begin
e:=e+1;
if (p^.inf>co[b]) then
d[e]:=d[b]+p^.dist
else
d[e]:=d[b]-p^.dist;
co[e]:=p^.inf;
if(p^.inf=y)then
begin
ok:=false;
break;
end;
end;
p:=p^.adr;
end;
viz[co[b]]:=1;
end;
end;
procedure afisare;
begin
assign(output,'sate.out');
rewrite(output);
writeln(d[e]);
close(output);
end;
begin
citire;
rezolva;
afisare;
end.