程序调试了N次都没对:
type z=record
q,t:integer;
end;
const f:array[1..4,1..2]of integer=((0,1),(0,-1),(1,0),(-1,0));
var a:array[-1..301,-1..301]of longint;
c:array[1..500000]of z;
n,u,x,y,j,i,q1,q2,q3,time,x1,y1:longint;
begin
readln(n);
for i:=1 to n do begin
readln(x,y,j);
a[x,y]:=j;
a[x-1,y]:=j;
a[x+1,y]:=j;
a[x,y-1]:=j;
a[x,y+1]:=j;
end;
q1:=1;
q2:=1;
if a[0,0]=0 then begin
writeln(0);
halt;
end;
while q1<=q2 do begin
q3:=q2+1;
inc(time);
for i:=q1 to q2 do for j:=1 to 4 do begin
x1:=c[i].q+f[j,1];
y1:=c[i].t+f[j,2];
if (x1>=0)and(y1>=0)and((a[x1,y1]>time)or(a[x1,y1]=0)) and(x1<=301)and(y1<=301) then begin
if a[x1,y1]=0 then begin writeln(time);halt;end;
inc(q2);
c[q2].q:=x1;
c[q2].t:=y1;
a[x1,y1]:=maxlongint;
end;
end;
q1:=q3;
end;
writeln(-1);
end.