Oil Deposits UVA - 572
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<vector>
#define IOS std::ios:sync_with_stdio(false);cin.tie(false);cout.tie(false);
using namespace std;
string mer[115];
int dit[115][115];
int n,m;
int solve(int x,int y)
{
if(dit[x][y]==1||x<0||y<0||x>=n||y>=m||mer[x][y]!='@')return 0;
else {
dit[x][y]=1;
solve(x-1,y-1);
solve(x-1,y+1);
solve(x+1,y+1);
solve(x+1,y-1);
solve(x,y+1);
solve(x,y-1);
solve(x+1,y);
solve(x-1,y);
}
return 0;
}
int main()
{
while(scanf("%d%d",&n,&m)==2 && n && m)
{
for(int i=0;i<n;i++)cin >> mer[i];
memset(dit,0,sizeof(dit));
int sum=0;
for(int i=0;i<n;i++)
{
for(int k=0;k<m;k++)
{
if(mer[i][k]=='@' && dit[i][k]==0){
sum++;
solve(i,k);
}
}
}
cout<<sum<<endl;
}
return 0;
}