(DFS)hdoj1241-Oil Deposit

时间:2024-08-31 20:03:44
#include<cstdio>
char a[][];
int m,n,dir[][]={{,},{,-},{,},{-,},{,},{,-},{-,},{-,-}},cnt;
void dfs(int x,int y)
{
a[x][y]='*';
for(int i=;i<;i++)
{
if(x+dir[i][]<||x+dir[i][]>=m||y+dir[i][]<||y+dir[i][]>=n)
continue;
if(a[x+dir[i][]][y+dir[i][]]=='@')
dfs(x+dir[i][],y+dir[i][]);
}
}
int main()
{
while(scanf("%d%d",&m,&n))
{
cnt=;
if(m==)
break;
for(int i=;i<m;i++)
{
scanf("%s",a[i]);
}
for(int i=;i<m;i++)
{
for(int j=;j<n;j++)
{
if(a[i][j]=='@')
{
cnt++;
dfs(i,j);
}
}
}
printf("%d\n",cnt);
}
}