为什么超时啊

P1451 求细胞数量

const dx:array[1..4]of -1..1=(-1,0,1,0);dy:array[1..4]of -1..1=(0,1,0,-1); var na,s:string;pic:array[0..101,0..101]of integer;bz:array[0..101,0..101]of boolean; ```cpp m,n,i,j,num:integer;h:array[1..4000,1..2]of integer; procedure doit(p,q:integer);var i,t,w,x,y:integer;begin inc(num);bz[p,q]:=false;t:=1;w:=1;h[1,1]:=p;h[1,2]:=q; repeat for i:=1 to 4 do begin x:=h[t,1]+dx[i];y:=h[t,2]+dy[i];if(x>0)and(x<=m)and(y>0)and(y<=n)and bz[x,y]then begin inc(w);h[w,1]:=x;h[w,2]:=y;bz[x,y]:=false;end;end;inc(t);until t>w;end; begin fillchar(bz,sizeof(bz),true);readln(m,n);for i:=1 to m do begin readln(s);for j:=1 to n do begin pic[i,j]:=ord(s[j])-ord('0'); if pic[i,j]=0 then bz[i,j]:=false;end;end;for i:=1 to m do for j:=1 to n do if bz[i,j]then doit(i,j);writeln(num);end. ```
by WendY3027 @ 2017-10-27 22:40:47


|