000http://acm.hdu.edu.cn/showproblem.php?pid=1241
# include<stdio.h>
# include<string.h>
# include<stdlib.h>
#define MAX 120
char map[MAX][MAX];
int oil,m,n;
int dis[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1};
void Clear(){
memset(map,0,sizeof(map));
oil=0;
}
void dfs(int x,int y){
int nextx,nexty;
int i;
for(i=0;i<8;i++){
nextx=x+dis[i][0];
nexty=y+dis[i][1];
if((nextx>=0&&nextx<m&&nexty>=0&&nexty<n)&& map[nextx][nexty]=='@')
{ map[nextx][nexty]='*';
dfs(nextx,nexty);
}
}
}
int main(){
int i,j;
while(scanf("%d%d",&m,&n),m||n)
{
Clear();
getchar();
for(i=0;i<m;i++)
scanf("%s",map[i]);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(map[i][j]=='@')
{
oil++;
dfs(i,j);
}
printf("%d\n",oil);
}
return 0;
}