#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int maxn = 20 + 5;
struct node
{
int x, y;
}beg;
char G[maxn][maxn];
int vis[maxn][maxn];
int w, h;
const int dir[][2] = {{-1, 0}, {1, 0}, {0, 1}, {0, -1}};
int check(node q)
{
if(!vis[q.x][q.y] && q.x >= 0&& q.x < h && q.y >= 0 && q.y < w && G[q.x][q.y] == '.') return true;
return false;
}
void bfs()
{
memset(vis, 0, sizeof(vis));
vis[beg.x][beg.y] = 1;
queue<node> q;
q.push(beg);
int tot= 1;
while(!q.empty())
{
node sq = q.front();
q.pop();
for(int i = 0; i < 4; i++)
{
node tq;
tq.x = sq.x + dir[i][0];
tq.y = sq.y + dir[i][1];
if(check(tq))
{
tot++;
vis[tq.x][tq.y] = 1;
q.push(tq);
}
}
}
printf("%d\n", tot);
}
int main()
{
while(scanf("%d%d", &w, &h) == 2 && (w || h))
{
for(int i = 0; i < h; i++)
{
scanf("%s", G[i]);
if(strchr(G[i], '@') != NULL) {beg.x = i; beg.y = strchr(G[i], '@') - G[i];}
}
//printf("%d %d\n", beg.x, beg.y);
bfs();
}
return 0;
}
hdu 1313
最新推荐文章于 2019-06-25 18:10:23 发布