#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<string>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn=100+5;
char pic[maxn][maxn];
int m,n;
int idx[maxn][maxn];
//struct Node
int cnt=0;
void dfs(int x,int y)
{
int i,j;
idx[x][y]=1;
for(i=-1;i<=1;i++)
{
for(j=-1;j<=1;j++)
{
int nx,ny;
nx=x+i;ny=y+j;
if(nx<0||nx>=m||ny<0||ny>=n||(i==0&&j==0)||idx[nx][ny]||pic[nx][ny]=='*')
continue;
idx[nx][ny]=1;
dfs(nx,ny);
}
}
return;
}
int main()
{
while(~scanf("%d%d",&m,&n)&&m&&n)
{
cnt=0;
memset(idx,0,sizeof(idx));
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>pic[i][j];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(pic[i][j]=='@'&&idx[i][j]==0)
{
cnt++;
dfs(i,j);
}
}
}
cout<<cnt<<endl;
}
}
纪念我做对1次dfs题目啊
最新推荐文章于 2022-03-23 12:50:59 发布