http://bailian.openjudge.cn/practice/2816/
#include <iostream>
using namespace std;
char a[25][25];
int m,n,x,y,b[4][2]={{-1,0},{0,1},{1,0},{0,-1}},res;
void dfs(int x,int y)
{
res++;
a[x][y]='#';
for(int i=0;i<4;i++)
{
int r=x+b[i][0],c=y+b[i][1];
if(r<0||r>=n||c<0||c>=m)
continue;
if(a[r][c]=='.')
dfs(r,c);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
while(cin >> m >> n,n||m)
{
res=0;
for(int i=0;i<n;i++)
{
cin >> a[i];
for(int j=0;j<m;j++)
{
if(a[i][j]=='@')
{
x=i;
y=j;
}
}
}
dfs(x,y);
cout << res << endl;
}
return 0;
}