Pagini recente » Cod sursa (job #1681884) | Cod sursa (job #2004468) | Cod sursa (job #1524096) | Istoria paginii utilizator/mililinca | Cod sursa (job #248733)
Cod sursa(job #248733)
type elem=record
x,y,z:longint;
end;
var f,g:text;
c:array[1..1000000] of elem;
pc,uc,n,i,j,m,x,y:longint;
q:boolean;
function min(a,b:longint):longint;
begin
if a>b then min:=b
else min:=a;
end;
function max(a,b:longint):longint;
begin
if a>b then max:=a
else max:=b;
end;
begin
assign(f,'sate.in');
reset(f);
readln(f,n,m,x,y);
for i:=1 to m do
readln(f,c[i].x,c[i].y,c[i].z);
pc:=1;
uc:=m;
q:=true;
while q do
begin
for i:=pc+1 to uc do
begin
if c[i].x=c[pc].x then
begin
m:=m+1;
c[m].x:=min(c[i].y,c[pc].y);
c[m].y:=max(c[i].y,c[pc].y);
c[m].z:=abs(c[i].z-c[pc].z);
end;
if c[i].y=c[pc].y then
begin
m:=m+1;
c[m].x:=min(c[i].x,c[pc].x);
c[m].y:=max(c[i].x,c[pc].x);
c[m].z:=abs(c[i].z-c[pc].z);
end;
if c[i].x=c[pc].y then
begin
m:=m+1;
c[m].x:=c[pc].x;
c[m].y:=c[i].y;
c[m].z:=abs(c[i].z+c[pc].z);
end;
if c[i].y=c[pc].x then
begin
m:=m+1;
c[m].x:=c[i].x;
c[m].y:=c[pc].y;
c[m].z:=abs(c[i].z+c[pc].z);
end;
if (c[m].x=x) and (c[m].y=y)then begin q:=false;break;end;
end;
if not q then break;
uc:=m;
pc:=pc+1;
end;
assign(g,'sate.out');
rewrite(g);
writeln(g,c[m].z);
close(g);
end.