#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
char a[21][21];
int NUM1, NUM2;
int t;
void dfs(int x,int y)
{
a[x][y]='#';
t++;
if(((x-1)>=0)&&(a[x-1][y]=='.'))//上
{
dfs(x-1,y);
}
if(((x+1)<NUM1)&&(a[x+1][y]=='.'))//下
{
dfs(x+1,y);
}
if(((y-1)>=0)&&(a[x][y-1]=='.'))//左
{
dfs(x,y-1);
}
if(((y+1)<NUM2)&&(a[x][y+1]=='.'))//右
{
dfs(x,y+1);
}
}
int main()
{
vector<int> jg;
while(1)
{
int m=0,n=0;
cin>>NUM2>>NUM1;
if((NUM1==0)&&(NUM2==0))
{
break;
}
for(int i=0;i<NUM1;i++)
{
for(int j=0;j<NUM2;j++)
{
cin>>a[i][j];
if(a[i][j]=='@')
{
m=i;
n=j;
}
}
}
/*
for(int i=0;i<NUM1;i++)
{
for(int j=0;j<NUM2;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}*/
dfs(m,n);
jg.push_back(t);
/*
cout<<endl;
for(int i=0;i<NUM1;i++)
{
for(int j=0;j<NUM2;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}*/
memset(a,0,sizeof(a));
t=0;
}
for(int i=0;i<jg.size();i++)
{
cout<<jg[i]<<endl;
}
return 0;
}
一个人站在黑色的瓦片上。他不能在红砖上移动,他只能在黑砖上移动。求可达的黑色瓦片的数量。