#include <bits/stdc++.h>
using namespace std;
char maze[25][25];
int visited[25][25];
int area = 0;
int W, H;
int sr, sc;
void DFS(int r, int c);
int main()
{
while(true){
// cin >> W >> H;
scanf("%d%d", &W, &H);
getchar();
// getchar();
if(W == 0 && H == 0) break;
memset(visited, 0, sizeof(visited));
area = 0;
int i, j;
for(i = 1; i <= H; i++){
for(j = 1; j <= W; j++){
scanf("%c", &maze[i][j]);
// cin >> maze[i][j];
// cout << "maze[" << i << "][" << j << "]: " << maze[i][j] << endl;
if(maze[i][j] == '@'){
sr = i;
sc = j;
}
}
getchar();
// getchar();
}
DFS(sr, sc);
printf("%d\n", area);
}
return 0;
}
void DFS(int r, int c)
{
if(r <= 0 || c <= 0 || r > H || c > W) return;
if(maze[r][c] == '#' || visited[r][c]) return;
area++;
visited[r][c] = 1;
DFS(r + 1, c);
DFS(r - 1, c);
DFS(r, c + 1);
DFS(r, c - 1);
}
POJ 2816:紅與黑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.