1 #include"cstring"
2 #include"cstdio"
3 const int maxn=20+5;
4 char tile[maxn][maxn];//方块格子
5 int m,n,idx[maxn][maxn];//m行n列 ,idx判断是否访问过
6 int a[]={-1,0,1,0};
7 int b[]={0,-1,0,1};//移动
8 int num; //黑格子数目
9 void dfs(int r,int c){
10 if(r<0||r>=m||c<0||c>=n) return;//出界
11 if(idx[r][c]>0||tile[r][c]=='#') return; //已经访问的格子或者红色格子
12 idx[r][c]=++num;//如果tile未访问过,标记访问,num+1
13 for(int i=0;i<4;i++){
14 dfs(r+a[i],c+b[i]);
15 }
16 }
17 int main(){
18 while(scanf("%d%d",&n,&m)==2&&n&&m){
19 for(int i=0;i<m;i++)
20 scanf("%s",tile[i]);
21 memset(idx,0,sizeof(idx));
22 num=0;
23 for(int i=0;i<m;i++)
24 for(int j=0;j<n;j++)
25 if(tile[i][j]=='@'){
26
27 dfs(i,j);
28 break;
29 }
30 printf("%d\n",num);
31 }
32 return 0;
33 }
34