| 比赛 | 暑假培训B班二测 | 评测结果 | AAAAAAEA | 
    | 题目名称 | 劣质的草 | 最终得分 | 87 | 
    | 用户昵称 | digital-T | 运行时间 | 0.069 s | 
    | 代码语言 | Pascal | 内存使用 | 3.99 MiB | 
    | 提交时间 | 2012-07-22 09:55:48 | 
显示代码纯文本
var
r,c,i,j,k,fresh:longint;
f:array[0..1001,0..1001]of longint;
procedure dfs(a,b:longint);
begin
f[a,b]:=fresh;
if f[a+1,b]=0 then dfs(a+1,b);
if f[a-1,b]=0 then dfs(a-1,b);
if f[a,b+1]=0 then dfs(a,b+1);
if f[a,b-1]=0 then dfs(a,b-1);
if f[a+1,b-1]=0 then dfs(a+1,b-1);
if f[a-1,b+1]=0 then dfs(a-1,b+1);
if f[a+1,b+1]=0 then dfs(a+1,b+1);
if f[a-1,b-1]=0 then dfs(a-1,b-1);
end;
begin
assign(input,'badgras.in');reset(input);
assign(output,'badgras.out');rewrite(output);
k:=0;
fresh:=0;
read(r,c);
for i:=1 to r do
 for j:=1 to c do
  begin
   read(f[i,j]);
   if f[i,j]=0 then f[i,j]:=-1;
   if f[i,j]>0 then f[i,j]:=0;
  end;
for i:=0 to r do f[i,0]:=-1;
for j:=0 to c do f[0,j]:=-1;
for i:=0 to r do f[i,c+1]:=-1;
for j:=0 to c do f[r+1,j]:=-1;
for i:=1 to r do
 for j:=1 to c do
  if f[i,j]=0 then
   begin
    inc(k);
    inc(fresh);
    dfs(i,j);
   end;
write(fresh);
close(input);
close(output);
end.