📄 ac1021.pas
字号:
program tju1021;
const
maxh=75;
maxw=75;
var
map:array[-1..maxh+2,-1..maxw+2]of char;
qx,qy:array[1..(maxh+4)*(maxw+4)+1]of shortint;
seg:array[-1..maxh+2,-1..maxw+2]of word;
h,w,i,j,a,b:shortint;
n,t,f,r,s:word;
procedure add(x,y:shortint;s:word);
begin
if seg[x,y]=0 then begin
inc(r);qx[r]:=x;qy[r]:=y;seg[x,y]:=s;
end;
end;
begin
read(n);
for t:=1 to n do begin
read(w,h);
for i:=-1 to h+2 do begin map[i,-1]:='X';map[i,0]:=' ';map[i,w+1]:=' ';map[i,w+2]:='X';end;
for i:=0 to w+1 do begin map[-1,i]:='X';map[0,i]:=' ';map[h+1,i]:=' ';map[h+2,i]:='X';end;
for i:=1 to h do begin
readln;
for j:=1 to w do
read(map[i,j]);
end;
repeat
fillchar(seg,sizeof(seg),0);
read(qy[1],qx[1],b,a);
if qx[1]=0 then break;
f:=0;r:=1;
repeat
inc(f);if (f>1) and (map[qx[f],qy[f]]='X') then continue;s:=seg[qx[f],qy[f]]+1;
i:=qx[f];j:=qy[f];repeat dec(i);add(i,j,s);until map[i,j]='X';
i:=qx[f];j:=qy[f];repeat dec(j);add(i,j,s);until map[i,j]='X';
i:=qx[f];j:=qy[f];repeat inc(i);add(i,j,s);until map[i,j]='X';
i:=qx[f];j:=qy[f];repeat inc(j);add(i,j,s);until map[i,j]='X';
until (f=r) or (seg[a,b]>0);
writeln(seg[a,b]);
until false;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -