#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
#include <cmath>
#include <algorithm>
#include <queue>
#include <vector>
#define inf 0x3f3f3f3f
#define sd(a) scanf("%d",&a)
#define mem0(a) memset(a,0,sizeof(a))
#define lowbit(x) ((x)&(-x))
typedef long long ll;
const int mod = 1e9+7;
const int maxn=30;
using namespace std;
int n,m,sum;
char a[25][25];
int dir[4][2]= {
{
0,1},{
0,-1},{
1,0},{
-1,0}};
int sx,sy;
int book[50][50]={
0};
struct node{
int x,y;
};
void dfs(int x,int y)
{
queue<node>q;
node cur,next;
cur.x = x,cur.y = y;
//cout<<cur.x<<" "<<cur.y<<endl;
q.push(cur);
book[x][y]=1;
while(!q.empty())
{
cur = q.front();
q.pop();
for(int i=0; i<4; i++)
{
next = cur;
next.x=cur.x+dir[i][0];
next.y=cur.y+dir[i][1];
//cout<<next.x<<" "<<next.y<<endl;
if(next.x<1||next.x>n||next.y<1||book[next.x][next.y]==1||next.y>m||a[next.x][next.y]=='#')
continue;
else sum++;
book[next.x][next.y] = 1;
q.push(next);
}
}
}
int main()
{
while(cin>>m>>n)
{
if(m==0&&n==0)
break;
memset(book,0,sizeof(book));
sum=0;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cin>>a[i][j];
if(a[i][j]=='@')
{
sx=i;
sy=j;
}
}
}
dfs(sx,sy);
cout<<sum+1<<endl;
}
return 0;
}
hdu 1312
猜你喜欢
转载自blog.csdn.net/qq_42937838/article/details/104780325
今日推荐
周排行