//搜八个方向即可 #include<stdio.h> #include<string.h> #define N 200 char ma[N][N]; int n,m,vis[N][N]; int dis[8][2]={1,0,-1,0,0,1,0,-1,1,1,1,-1,-1,1,-1,-1}; void dfs(int x,int y) { int i,xx,yy; vis[x][y]=1; for(i=0;i<8;i++) { xx=x+dis[i][0]; yy=y+dis[i][1]; if(ma[xx][yy]=='@'&&!vis[xx][yy]&&xx>=1&&xx<=n&&yy>=1&&yy<=m) dfs(xx,yy); } return ; } int main() { int i,j,k; while(scanf("%d%d",&n,&m),n||m) { for(i=1;i<=n;i++) scanf("%s",ma[i]+1); memset(vis,0,sizeof(vis)); k=0; for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(vis[i][j]==0&&ma[i][j]=='@') { dfs(i,j);k++; } printf("%d ",k); } return 0;}