005 - 赤と黒
時間制限 1 秒 / メモリ制限 128 MB / 得点 15 / x 18 /
Problem
正方形のタイルが敷き詰められた長方形の部屋がある.タイルの色は赤か黒 である.最初に一人の人が部屋の黒いタイルの上に立っている. あるタイルからは隣接する四つのタイルに移動することができる. ただし,赤いタイルの上に移動することはできない.移動できるのは黒いタイルの上 だけである.
上記の移動を繰り返すことによって到達できるタイルの数を答えるプログラムを書きなさい.
Input
入力は複数のデータセットからなる.データセットは,WとHと いう二つの正の整数からなる行で始まる.WとHは部屋のx方向, y方向にタイルがいくつ並ぶかを表す.WとHは20以下である.
その後ろにH行続く.それぞれの行にはW個の文字が含まれてい る.それぞれの文字は次に示すようにタイルの状態を表す.
- '.' - 黒いタイル
- '#' - 赤いタイル
- '@' - 黒いタイルの上の人(一つのデータセットに1度だけ出現)
入力の終わりは0を二つ含む行で表される.
Output
入力のデータセットごとに, 最初の位置から到達可能なタイルの数を1行で出力しなさい(最初のタイルも含む).
Sample Input
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 11 9 .#......... .#.#######. .#.#.....#. .#.#.###.#. .#.#..@#.#. .#.#####.#. .#.......#. .#########. ........... 11 6 ..#..#..#.. ..#..#..#.. ..#..#..### ..#..#..#@. ..#..#..#.. ..#..#..#.. 7 7 ..#.#.. ..#.#.. ###.### ...@... ###.### ..#.#.. ..#.#.. 0 0
Output for the Sample Input
45 59 6 13