八方向 深搜
#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
char maps[1050][1050];
int n,m,d[8]= {-1,-1,-1,0, 0, 1,1,1};
int z[8]= {-1, 0, 1,-1,1,-1,0,1}; //8个方向
void dfs(int x, int y) {
maps[x][y] = '*'; //变为*,相当于走过
for (int i = 0; i < 8; i++) {
int nx = x + d[i], ny = y + z[i];
if (0<=nx&&nx<m&&0<=ny&&ny<n) {
if (maps[nx][ny]=='@') {
dfs(nx, ny);
}
}
}
}
int main() {
while(~scanf("%d%d", &m, &n)&&(m || n)) {
int count = 0;
for(int i = 0; i < m; i++)
scanf("%s", maps[i]);
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++) {
if(maps[i][j]=='@') {
dfs(i,j);
count++;
}
}
printf("%d\n", count);
}
return 0;
}