#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char map[105][105];
int xx[8]={0,1,0,-1,1,-1,1,-1};
int yy[8]={1,0,-1,0,1,-1,-1,1};
int s=0;
void DFS(int i,int j);
void DFS_Tra(int n,int m)
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(map[i][j]!='*')
{
DFS(i,j);
s++;
}
}
}
}
void DFS(int i,int j)
{
int k,t1,t2;
map[i][j]='*';
for(k=0;k<8;k++)
{
t1=i+xx[k];
t2=j+yy[k];
if(map[t1][t2]=='*')
continue;
DFS(t1,t2);
}
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m))
{
if(n==0&&m==0)
break;
int i;
s=0;
for(i=1;i<=n;i++)
{
scanf("%s",map[i]+1);
}
for(i=0;i<=n+1;i++)
map[i][0]=map[i][m+1]='*';
for(i=0;i<=m+1;i++)
map[0][i]=map[n+1][i]='*';
DFS_Tra(n,m);
printf("%d\n",s);
}
return 0;
}
hdu 1241 DFS
最新推荐文章于 2022-08-04 20:51:32 发布