记录编号 |
74472 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[福州培训2010] 01迷宫 |
最终得分 |
100 |
用户昵称 |
苏轼 |
是否通过 |
通过 |
代码语言 |
Pascal |
运行时间 |
0.290 s |
提交时间 |
2013-10-25 17:00:27 |
内存使用 |
16.38 MiB |
显示代码纯文本
Program sl;
type
re=record
x,y:longint;
end;
const
maxn=1000000;
var
n,m,i,j,x,y,l,r,p,s:longint;
a:array[1..1000,1..1000]of boolean;
k:array[1..1000,1..1000]of longint;
w:array[1..maxn]of longint;
q:array[1..maxn]of re;
c:char;
begin
assign(input,'maze01.in');
assign(output,'maze01.out');
reset(input);
rewrite(output);
readln(n,m);
for i:=1 to n do
begin
for j:=1 to n do
begin
read(c);
if c='1' then a[i,j]:=true;
end;
readln;
end;
p:=0;
for i:=1 to n do
for j:=1 to n do
begin
if k[i,j]>0 then continue;
l:=0; r:=1;
q[1].x:=i; q[1].y:=j;
inc(p);
k[i,j]:=p;
s:=1;
while l<r do
begin
if l=maxn then l:=1
else inc(l);
x:=q[l].x;y:=q[l].y;
if (x>1)and(k[x-1,y]=0)and(a[x-1,y]xor a[x,y])
then begin
inc(s);
k[x-1,y]:=p;
if r=maxn then r:=1
else inc(r);
q[r].x:=x-1;q[r].y:=y;
end;
if (y>1)and(k[x,y-1]=0)and(a[x,y-1]xor a[x,y])
then begin
inc(s);
k[x,y-1]:=p;
if r=maxn then r:=1
else inc(r);
q[r].x:=x;q[r].y:=y-1;
end;
if (x<n)and(k[x+1,y]=0)and(a[x+1,y]xor a[x,y])
then begin
inc(s);
k[x+1,y]:=p;
if r=maxn then r:=1
else inc(r);
q[r].x:=x+1;q[r].y:=y;
end;
if (y<n)and(k[x,y+1]=0)and(a[x,y+1]xor a[x,y])
then begin
inc(s);
k[x,y+1]:=p;
if r=maxn then r:=1
else inc(r);
q[r].x:=x;q[r].y:=y+1;
end;
end;
w[p]:=s;
end;
for i:= 1 to m do
begin
read(x,y);
writeln(w[k[x,y]]);
end;
close(input);
close(output);
end.