hdu1241(DFS入门)

来源:互联网 发布:淘宝网店卖什么最赚钱 编辑:程序博客网 时间:2024/04/29 15:30
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;


int m,n;
char maze[110][110];
int forward[8][2]={-1,0,-1,1,0,1,1,1,1,0,1,-1,0,-1,-1,-1};
bool mark[110][110];
int ans,flag;
void DFS(int x,int y)
{
int nx,ny,v;
for(int i=0; i<8; i++)
{
nx=x+forward[i][0];
ny=y+forward[i][1];
if(nx>=1&&nx<=m&&ny>=1&&ny<=n&&mark[nx][ny]==0&&maze[nx][ny]=='@')
{
mark[nx][ny]= 1;
DFS(nx,ny);
}
}
}
int main()
{
while(scanf("%d%d",&m,&n)!=EOF,m||n)
{
for(int i=1; i<=m; i++)
for(int j=1; j<=n; j++)
mark[i][j]= 0;
for(int i=1; i<=m; i++)
for(int j=1; j<=n; j++)
{
cin>>maze[i][j];
}
ans= 0;
for(int i=1; i<=m; i++)
for(int j=1; j<=n; j++)
{
if(maze[i][j]=='@'&&!mark[i][j])
{
mark[i][j]= 1;
DFS(i,j);
ans++;
}
}
printf("%d\n",ans);
}
return 0;
}
原创粉丝点击