output_description: 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).
input_description: The input consists of multiple data sets. A data set starts with a line
  containing two positive integers _W_ and _H_ ; _W_ and _H_ are the numbers of
  tiles in the _x_ \- and _y_ \- directions, respectively. _W_ and _H_ are not
  more than 20.
  
  There are _H_ more lines in the data set, each of 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) 
  
  The end of the input is indicated by a line consisting of two zeros.
attempt: import collections
  
  while True:
      w, h = map(int, input().split())
      if w == h == 0:
          break
      else:
          ans = 1
          L = []
          q = collections.deque()
          for i in range(h):
              s = input()
              T = []
              for j in range(w):
                  if s[j] == "@":
                      T.append(0)
                      q.append([i, j])
                  else:
                      T.append(s[j])
              L.append(T)
          dy_dx = [[1, 0], [0, 1], [-1, 0], [0, -1]]
          while len(q) > 0:
              cur = q.popleft()
              for i in range(4):
                  y = cur[0] + dy_dx[i][0]
                  x = cur[1] + dy_dx[i][1]
                  if 0 <= x < w and 0 <= y < h:
                      if L[y][x] == ".":
                          L[y][x] = L[cur[0]][cur[1]] + 1
                          ans += 1
                          q.append([y, x])
          print(ans)
  
problem_description: B: Red and Black
  
  There is a rectangular room, covered with square tiles. Each tile is colored
  either red or black. A man is standing on a black tile. From a tile, he can
  move to one of four adjacent tiles. But he can't move on red tiles, 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.
samples: [{"input": "9\n    ....#.\n    .....#\n    ......\n    ......\n    ......\n    ......\n    ......\n    #@...#\n    .#..#.\n    11 9\n    .#.........\n    .#.#######.\n    .#.#.....#.\n    .#.#.###.#.\n    .#.#..@#.#.\n    .#.#####.#.\n    .#.......#.\n    .#########.\n    ...........\n    11 6\n    ..#..#..#..\n    ..#..#..#..\n    ..#..#..###\n    ..#..#..#@.\n    ..#..#..#..\n    ..#..#..#..\n    7 7\n    ..#.#..\n    ..#.#..\n    ###.###\n    ...@...\n    ###.###\n    ..#.#..\n    ..#.#..\n    0 0", "output": "59\n    6\n    13"}]