队列请开10000
by hehezhou @ 2018-07-18 15:20:17
@[zhr596082417](/space/show?uid=67371) 但是连样例都过不了
by 幻蓝 @ 2018-07-18 15:20:48
我交了。。。
过了。。
by hehezhou @ 2018-07-18 15:22:12
a,b从0开到101即可
by hehezhou @ 2018-07-18 15:22:51
@[zhr596082417](/space/show?uid=67371) 他就是说我201错误
by 幻蓝 @ 2018-07-18 15:22:56
或者(a[xx,yy]<>0)and(xx<=n)and(yy<=m)and(xx>=1)and(yy>=1)and(b[xx,yy])的(a[xx,yy]<>0)放到后面判断
by hehezhou @ 2018-07-18 15:23:39
@[zhr596082417](/space/show?uid=67371) 谢谢大佬 过了
by 幻蓝 @ 2018-07-18 15:25:41
@[zhr596082417](/space/show?uid=67371) 话说这个有关系吗
by 幻蓝 @ 2018-07-18 15:25:54
```pascal
var
i,j,n,m,s:longint;
k:string;
f:array[1..4,1..2]of integer=((1,0),(-1,0),(0,1),(0,-1));
a:array[0..1000,0..1000]of longint;//这里
b:array[0..1000,0..1000]of boolean;//这里
d:array[1..10000,0..2]of longint;//这里
procedure dfs(x,y:longint);
var
i,head,tail,xx,yy:longint;
begin
head:=0;tail:=1;
d[1,0]:=0;
d[1,1]:=x;
d[1,2]:=y;
repeat
inc(head);
for i:=1 to 4 do
begin
xx:=d[head,1]+f[i,1];
yy:=d[head,2]+f[i,2];
if (a[xx,yy]<>0)and(xx<=n)and(yy<=m)and(xx>=1)and(yy>=1)and(b[xx,yy]) then
begin
inc(tail);
d[tail,0]:=head;
d[tail,1]:=xx;
d[tail,2]:=yy;
b[xx,yy]:=false;
end;
end;
until head>=tail;
end;
begin
readln(n,m);
fillchar(b,sizeof(b),1);
for i:=1 to n do
begin
readln(k);
for j:=1 to m do
val(k[j],a[i,j]);
end;
for i:=1 to n do
for j:=1 to m do
if (a[i,j]<>0)and(b[i,j]) then
begin
b[i,j]:=false;
dfs(i,j);
inc(s);
end;
writeln(s);
end.
```
by hehezhou @ 2018-07-18 15:27:36
@[zhr596082417](/space/show?uid=67371) 为什么放到后面判断就不会爆
by 幻蓝 @ 2018-07-18 15:28:38