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: from queue import Queue
  
  while True:
      w, h = map(int, input().split())
      if w == h == 0:
          break
  
      tile = [input() for i in range(h)]
      for x, col in enumerate(tile):
          if "@" in col:
              y = col.index("@")
              s = (x, y)
              break
  
      visit = [[False for i in range(w)] for j in range(h)]
      dx = (0, -1, 1, 0)
      dy = (1, 0, 0, -1)
      que = Queue()
      que.put(s)
      while not que.empty():
          x, y = que.get()
          if visit[x][y]:
              continue
  
          visit[x][y] = True
          for j in range(4):
              sx = x + dx[j]
              sy = y + dy[j]
              if sx < 0 or sx >= h or sy < 0 or sy >= w:
                  continue
              if tile[sx][sy] != "#":
                  que.put((sx, sy))
  
      ans = 0
      for col in visit:
          ans += col.count(True)
  
      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"}]