lkcount.pas

来自「Magio牛的usaco源代码」· PAS 代码 · 共 50 行

PAS
50
字号
{
PROB:lkcount
LANG:PASCAL
}

program lkcount;
const
  maxn=100;
  maxm=100;
  dx:array[1..8]of shortint=(-1,-1,-1,0,1,1,1,0);
  dy:array[1..8]of shortint=(-1,0,1,1,1,0,-1,-1);
var
  map:array[0..maxn+1,0..maxm+1]of char;
  qx,qy:array[1..maxn*maxm]of byte;
  n,m,i,j,f,r,count:word;
procedure floodfill(x,y:byte);
  var
    i:byte;
  begin
    f:=0;r:=1;qx[1]:=x;qy[1]:=y;map[x,y]:='.';
    repeat
      inc(f);
      for i:=1 to 8 do
        if map[qx[f]+dx[i],qy[f]+dy[i]]='W' then begin
          inc(r);qx[r]:=qx[f]+dx[i];qy[r]:=qy[f]+dy[i];
          map[qx[r],qy[r]]:='.';
        end;
    until f=r;
  end;
begin
  assign(input,'lkcount.in');reset(input);
  assign(output,'lkcount.out');rewrite(output);
  read(n,m);
  for i:=1 to n do begin
    readln;
    for j:=1 to m do
      read(map[i,j]);
  end;

  for i:=1 to n do
    for j:=1 to m do
      if map[i,j]='W' then begin
        inc(count);
        floodfill(i,j);
      end;

  writeln(count);
  close(input);close(output);
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?