/*
两个整数W和H,分别表示x方向(列),y方向(行)瓷砖的数量
用'.'表示黑色的瓷砖
用'#'表示红色的瓷砖
'@'表示黑色的瓷砖,并且是唯一的开始的黑色的瓷砖,只出现一次。
当在一行中读入的是两个零时,表示出入结束。
*/
#include<iostream>
using namespace std;
char z[21][21];
int w,h;
int main()
{
int f(int ,int );
while(cin>>w>>h)
{
if(w==0&&h==0)
break;
for(int i=1;i<=h;i++)
for(int j=1;j<=w;j++)
cin>>z[i][j];
for(int i=1;i<=h;i++)
for(int j=1;j<=w;j++)
if(z[i][j]=='@')
cout<<f(i,j)<<endl;
}
return 0;
}
int f(int i,int j)
{
if(i<1||i>h||j<1||j>w)
return 0;
if(z[i][j]!='#')
{
z[i][j]='#';
return 1+f(i,j-1)+f(i,j+1)+f(i-1,j)+f(i+1,j);
}
else
return 0;
}
两个整数W和H,分别表示x方向(列),y方向(行)瓷砖的数量
用'.'表示黑色的瓷砖
用'#'表示红色的瓷砖
'@'表示黑色的瓷砖,并且是唯一的开始的黑色的瓷砖,只出现一次。
当在一行中读入的是两个零时,表示出入结束。
*/
#include<iostream>
using namespace std;
char z[21][21];
int w,h;
int main()
{
int f(int ,int );
while(cin>>w>>h)
{
if(w==0&&h==0)
break;
for(int i=1;i<=h;i++)
for(int j=1;j<=w;j++)
cin>>z[i][j];
for(int i=1;i<=h;i++)
for(int j=1;j<=w;j++)
if(z[i][j]=='@')
cout<<f(i,j)<<endl;
}
return 0;
}
int f(int i,int j)
{
if(i<1||i>h||j<1||j>w)
return 0;
if(z[i][j]!='#')
{
z[i][j]='#';
return 1+f(i,j-1)+f(i,j+1)+f(i-1,j)+f(i+1,j);
}
else
return 0;
}