#include<bits/stdc++.h>
using namespace std;
int i,j,n,m;
const int M = 105;
int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{-1,1},{1,-1},{-1,-1}};
char a[M][M];
void dfs(int si,int sj){
int di,dj;
for(int k=0;k<8;k++){
di=si+dir[k][0];
dj=sj+dir[k][1];
if(di>=1&&di<=m&&dj>=1&&dj<=n){
if(a[di][dj]=='@'){
a[di][dj]='*';
dfs(di,dj);
}
}
}
}
int main(){
while(cin>>m>>n){
int sum=0;
if(m==0&&n==0) break;
for(i=1;i<=m;i++){
for(j=1;j<=n;j++) cin>>a[i][j];
}
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
if(a[i][j]=='@'){
sum++; a[i][j]='*';
dfs(i,j);
}
}
}
cout<<sum<<endl;
}
return 0;
}
[题目链接]https://acm.hdu.edu.cn/showproblem.php?pid=1241