Description
there is a rectangular and covered with square tiles. Each tile is colored either red or black. A man was standing on a black tile. From a tiles, he can move to one of the four adjacent tiles. But he can ' t move on red tiles, and he can move only on black tiles.
Write a program to count the number of
black tiles which he can reach by repeating the moves described above.
Input
The
input consists of multiple data sets. A data set starts with a line containing the positive integers W and H; W and H is the numbers of tiles in the X-and y-directions, respectively. W and H is not more than 20.
There is H more lines in the data set, and each of the which includes W characters. Each character represents the color of a tile as follows.
'. '-a black tile
' # '-A red tile
' @ '-a man on a black tile (appears exactly once in a data set)
Output
for each data set, your program should output a line which contains the number of tiles he can reach from the initial Tile (including itself).
Sample Input
6 9....#......#..............................#@...#.#. #.11 9.#..........#.#######. #.#.....#.. #.#.###.#.. #.#[email protected]#.#. #.#####.#.. #.......#.. #########............ 11 6..#. #.. #....#.. #.. #....#.. #.. ###.. #.. #.. #@...#.. #.. #....#.. #.. #.. 7 7..#.#....#.#. ###.###[email protected]###.###. #.#....#.#.. 0 0
Sample Output
4559613
#include <stdio.h>int w,h;char a[100][100];int find (int x,int y) { if (x<0| | x>=h| | y<0| | Y>=W) return 0; if (a[x][y]== ' # ') return 0; else { a[x][y]= ' # '; Return 1+find (x+1,y) +find (x-1,y) +find (x,y-1) +find (x,y+1); }} int main () { int i,j; while (scanf ("%d%d", &w,&h)!=-1) { getchar (); for (i=0;i
Red and Black