#include <bits/stdc++.h>
using namespace std;
int n,m,i,j,sx,sy,tx,ty,ans;
int vis[25][25];
int dir[4][2]={0,1,1,0,-1,0,0,-1};
char mp[25][25];
struct node
{
int x,y;
};
int bfs(int sx,int sy)
{
queue<node>q;
memset(vis,0,sizeof(vis));
vis[sx][sy]=1;
ans=1;
node a,b;
a.x=sx;
a.y=sy;
q.push(a);
while(!q.empty())
{
a=q.front();
q.pop();
for(i=0;i<4;i++)
{
tx=a.x+dir[i][0];
ty=a.y+dir[i][1];
if(tx<1||tx>n||ty<1||ty>m) continue;
if(vis[tx][ty]==0&&mp[tx][ty]=='.')
{
ans++;
b.x=tx;
b.y=ty;
vis[tx][ty]=1;
q.push(b);
}
}
}
return ans;
}
int main()
{
while(~scanf("%d %d",&m,&n))
{
if(n==0&&m==0) break;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cin>>mp[i][j];
if(mp[i][j]=='@')
{
sx=i;
sy=j;
}
}
}
printf("%d\n",bfs(sx,sy));
}
return 0;
}
hdu1312
最新推荐文章于 2022-01-12 23:41:22 发布