#include<stdio.h>
#define SIZE 110
int ROW, COL;
int dx[8] = {0,1,1,1,0,-1,-1,-1};
int dy[8] = {1,1,0,-1,-1,-1,0,1};
char map[SIZE][SIZE];
int visited[SIZE][SIZE];
void dfs(int row, int col)
{
if(visited[row][col] == 1 || row < 0 || row >= ROW || col < 0 || col >= COL || map[row][col] != '@') return;
visited[row][col] = 1;
int i;
for(i = 0; i < 8; i++)
dfs(row+dx[i], col+dy[i]);
}
int Solve()
{
int i, j, count = 0;
for(i = 0; i < ROW; i++)
for(j = 0; j < COL; j++)
{
if(visited[i][j] == 0 && map[i][j] == '@')
{
dfs(i,j);
count++;
}
}
return count;
}
int main()
{
while(1)
{
scanf("%d%d", &ROW, &COL);
getchar();
if(ROW == 0 && COL == 0)
break;
int i, j;
for(i = 0; i < ROW; i++)
{
for(j = 0; j < COL; j++)
scanf("%c",&map[i][j]);
getchar();
}
memset(visited, 0, sizeof(visited));
printf("%d\n", Solve());
}
return 0;
}
UVa 572 Oil Deposits
最新推荐文章于 2021-05-26 22:19:09 发布