大意是找@的连通块数量
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int m,n,ans;
char map[110][110];
int d[8][2]={0,1,0,-1,-1,0,1,0,-1,1,-1,-1,1,1,1,-1};
void dfs(int t,int f)
{
if(map[t][f]=='@'&&t>=0&&t<m&&f>=0&&f<n)
{ map[t][f]='*';
for(int i=0;i<8;i++)
{ int a=t+d[i][0];
int b=f+d[i][1];
dfs(a,b);
}
}
}
int main()
{
while(cin>>m>>n)
{
if(m==0)break;
ans=0;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>map[i][j];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
if(map[i][j]=='@')ans++;
dfs(i,j);
}
cout<<ans<<endl;
}
return 0;
}