Pagini recente » Cod sursa (job #2275728) | Cod sursa (job #2767318) | Cod sursa (job #2451358) | Cod sursa (job #2442455) | Cod sursa (job #67595)
Cod sursa(job #67595)
program sate;
type rec1=record
s,d,c,x1,x2:longint;
end;
var f,g:text;
a:array[0..100030] of rec1;
n,m,mx,x,y,i,j:longint;
function min(x,y:longint):longint;
begin
if x<y then min:=x else min:=y;
end;
function max(x,y:longint):longint;
begin
if x<y then max:=y else max:=x;
end;
begin
assign(f,'sate.in'); reset(f);
assign(g,'sate.out'); rewrite(g);
readln(f,n,m,x,y);
for i:=1 to m do readln(f,a[i].s,a[i].d,a[i].c);
i:=1;
while i<=(m-1) do begin
j:=i+1; mx:=m;
while j<=mx do begin
if (a[i].s=a[j].s) and(i<>j) then begin
inc(m); a[m].s:=min(a[i].d,a[j].d);
a[m].d:=max(a[i].d,a[j].d);
a[m].c:=abs(a[i].c-a[j].c);
a[m].x1:=i; a[m].x2:=j;
if (a[j].x1=i)or (a[j].x2=i) or(a[i].x1=j) or (a[i].x2=j) then dec(m);
end;
if (a[i].d=a[j].d)and(i<>j) then begin
inc(m); a[m].s:=min(a[i].s,a[j].s);
a[m].d:=max(a[i].s,a[j].s);
a[m].c:=abs(a[i].c-a[j].c);
a[m].x1:=i; a[m].x2:=j;
if (a[j].x1=i)or (a[j].x2=i) or(a[i].x1=j) or (a[i].x2=j) then dec(m);
end;
if ((a[i].s=a[j].d) or(a[i].d=a[j].s)) and(i<>j) then begin
inc(m); a[m].s:=min(a[i].s,a[j].s);
a[m].d:=max(a[i].d,a[j].d);
a[m].c:=a[i].c+a[j].c;
a[m].x1:=i; a[m].x2:=j;
if (a[j].x1=i)or (a[j].x2=i) or(a[i].x1=j) or (a[i].x2=j) then dec(m);
end;
inc(j);
if (a[m].s=x) and(a[m].d=y) then j:=m+2;
end;
if (a[m].s=x) and(a[m].d=y) then i:=m+2;
inc(i);
end;
writeln(g,a[m].c);
close(f); close(g);
end.