格子类搜索
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
const int N=22;
char mp[N][N];
int n,m,ans,visit[N][N];
int v[4][2]={0,1,0,-1,1,0,-1,0};
void dfs(int x,int y){
visit[x][y]=1;
ans++;
for(int i=0;i<4;i++){
int nx=x+v[i][0],ny=y+v[i][1];
if(!visit[nx][ny]&&mp[nx][ny]=='.')
dfs(nx,ny);
}
}
void solve(){
ans=0;
memset(visit,0,sizeof visit);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(mp[i][j]=='@'){
dfs(i,j);
printf("%d\n",ans);
return;
}
}
int main(){
while(cin>>m>>n){//m列n行
if(n==0&&m==0) break;
memset(mp,'#',sizeof mp);
for(int i=1;i<=n;i++)
scanf("%s",mp[i]+1);
solve();
}
return 0;
}