#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int T,M,N;
char map[110][110];
int xx[4]={1,0,0,-1};
int yy[4]={0,1,-1,0};
int fun(int x,int y)
{
if(x<0||x>=N||y<0||y>=M)
return 0;
return 1;
}
void DFS(int x,int y)
{
int i,x1,y1;
map[x][y]='.';
for(i=0;i<4;i++)
{
x1=x+xx[i];
y1=y+yy[i];
if(map[x1][y1]=='#'&&fun(x1,y1))
DFS(x1,y1);
}
}
int main( )
{
scanf("%d",&T);
while(T--)
{
int i,j,k,ans=0;
scanf("%d%d",&N,&M);
getchar();
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
scanf("%c",&map[i][j]);
getchar();
}
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(map[i][j]=='#')
{
ans++;
DFS(i,j);
}
printf("%d\n",ans);
}
return 0;
}
转载于:https://www.cnblogs.com/tangcong/archive/2011/05/11/2042776.html