program OIl_Deposit; var i,j,k,n,m,dx,dy,nx,ny,x,y,head,tail,sum:integer; gr:array[0..1000,0..1000]of integer; dui:array[1..10000,1..2]of integer; s:string; procedure floodfill(x,y,sum:integer); var i,j:integer; begin dui[head,1]:=x; dui[head,2]:=y; while head<=tail do begin for dx:=-1 to 1 do begin for dy:=-1 to 1 do begin nx:=dui[head,1]+dx; ny:=dui[head,2]+dy; if (nx<=m)and(nx>0)and(ny<=n)and(ny>0) then begin if gr[nx,ny]=1 then begin inc(tail); dui[tail,1]:=nx; dui[tail,2]:=ny; gr[nx,ny]:=sum; end;{then} end;{then} end;{for-dy} end;{for-dx} inc(head); end;{while} end;{floodfill} begin{main} readln(m,n); while m<>0 do begin for i:=1 to m do begin readln(s); for j:=1 to n do begin if s[j]='@' then gr[i,j]:=1; if s[j]='*' then gr[i,j]:=0; end;{for-j} end;{for-i} sum:=10; for i:=1 to m do begin for j:=1 to n do begin if gr[i,j]=1 then begin head:=1; tail:=1; inc(sum); floodfill(i,j,sum); end;{then} end;{for-j} end;{for-i} writeln(sum-10); readln(m,n); end;{while} end. /************************************************************** Problem: 2233 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/