kids 2012-01-25 04:48:00
点我顶贴
收藏
删除
program em;
const
dj:array[1..4] of integer=(1,0,-1,0);
di:array[1..4] of integer=(0,1,0,-1);
var
p:array[1..1000,1..1000] of integer;
i,j,n,x1,x2,y1,y2,m,min:longint;
s:string;
procedure sort;
begin
if p[x2,y2]<=min then min:=p[x2,y2];
end;
procedure trye(i,j,m:integer);
var
k,ii,jj:integer;
begin
p[i,j]:=m;
ii:=i;
jj:=j;
if (i<>x2) or (j<>y2) then
for k:=1 to 4 do
begin
i:=ii+di[k];
j:=jj+dj[k];
if (i>=1) and (i<=n) and (j>=1) and (j<=n) and (p[i,j]=0) then
trye(i,j,m+1);
end
else sort;
p[ii,jj]:=0;
end;
begin
readln(n);
for i:=1 to n do
begin
readln(s);
for j:=1 to n do val(s[j],p[i,j]);
end;
readln(x1,y1);
readln(x2,y2);
min:=maxint;
trye(x1,y1,0);
writeln(min);
end.