var
v:array [1..4] of longint=(-1,1,0,0);
u:array [1..4] of longint=(0,0,-1,1);
a:array [0..100,0..100] of 0..1;
i,j,k,l:longint;
n,m:longint;
x1,x2,y1,y2,min:longint;
procedure search(x,y,w,c:longint);
var
i:longint;
begin
if (x=x2) and (y=y2) then
begin
if c<min then min:=c;
exit;
end;
if c>=min then exit;
for i:=1 to 4 do
if (a[x+v[i],y+u[i]]=0) then
begin
a[x+v[i],y+u[i]]:=1;
if w=i then search(x+v[i],y+u[i],w,c) else search(x+v[i],y+u[i],i,c+1);
end;
end;
begin
readln(n,m);
fillchar(a,sizeof(a),1);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
min:=maxint;
readln(x1,y1,x2,y2);
search(x1,y1,0,0);
writeln(min);
readln;
end.
暴搜为什么会是WA0,却没有超时呢?
program lessturn;
var
v:array [1..4] of longint=(-1,1,0,0);
u:array [1..4] of longint=(0,0,-1,1);
a:array [0..100,0..100] of 0..1;
i,j,k,l:longint;
n,m:longint;
x1,x2,y1,y2,min:longint;
procedure search(x,y,w,c:longint);
var
i:longint;
begin
if (x=x2) and (y=y2) then
begin
if c<min then min:=c;
exit;
end;
if c>=min then exit;
for i:=1 to 4 do
if (a[x+v[i],y+u[i]]=0) then
begin
a[x+v[i],y+u[i]]:=1;
if w=i then search(x+v[i],y+u[i],w,c) else search(x+v[i],y+u[i],i,c+1);
a[x+v[i],y+u[i]]:=0;
end;
end;
begin
readln(n,m);
fillchar(a,sizeof(a),1);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
min:=maxint;
readln(x1,y1,x2,y2);
search(x1,y1,0,0);
writeln(min);
readln;
end.