//看题代码加刷人人一共做了10分钟,搜索题现在真水
#include <iostream>
#include <cstring>
using namespace std;
int W,H;
char map[21][21];
bool visited[21][21];
int dirX[4] = {-1,0,1,0};
int dirY[4] = {0,1,0,-1};
int s_x,s_y;
int num;
void DFS(int x,int y)
{
visited[x][y] = true;
for(int i = 0; i < 4; i++)
{
int xx = x + dirX[i];
int yy = y + dirY[i];
if(xx < 0 || xx >= H || yy < 0 || yy >= W || visited[xx][yy])
{
continue;
}
if(map[xx][yy] == '.')
{
DFS(xx,yy);
num++;
}
}
}
int main()
{
while(cin>>W>>H)
{
if(W == 0 || H == 0)
break;
for(int i = 0; i < H; i++)
{
for(int j = 0; j < W; j++)
{
cin>>map[i][j];
if(map[i][j] == '@')
{
s_x = i;
s_y = j;
}
}
}
num = 1;
memset(visited,false,sizeof(visited));
DFS(s_x,s_y);
cout<<num<<endl;
}
return 0;
}
hdu 1312 DFS
最新推荐文章于 2021-09-21 15:26:03 发布