Red and Black --- 2004年 愛媛大会 国内予選 問題B

【問題】
 正方形のタイルが敷き詰められた長方形の部屋がある.タイルの色は赤か黒である.最初に一人の人が部屋の黒いタイルの上に立っている.あるタイルからは隣接する四つのタイルに移動することができる.ただし,赤いタイルの上に移動することはできない.移動できるのは黒いタイルの上だけである.
 上記の移動を繰り返すことによって到達できるタイルの数を答えるプログラムを書きなさい.

【入力】
 入力は複数のデータセットからなる.データセットは,WとHという二つの正の整数からなる行で始まる.WとHは部屋のx方向, y方向にタイルがいくつ並ぶかを表す.WとHは20以下である.
 その後ろにH行続く.それぞれの行にはW個の文字が含まれている.それぞれの文字は次に示すようにタイルの状態を表す.
    '.' - 黒いタイル
    '#' - 赤いタイル
    '@' - 黒いタイルの上の人(一つのデータセットに1度だけ出現)
 入力の終わりは0を二つ含む行で表される.

【出力】
 入力のデータセットごとに,最初の位置から到達可能なタイルの数を1行で出力しなさい(最初のタイルも含む).

入力例
6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
11 9
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#..@#.#.
.#.#####.#.
.#.......#.
.#########.
...........
11 6
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
7 7
..#.#..
..#.#..
###.###
...@...
###.###
..#.#..
..#.#..
0 0

【出力例】
45
59
6
13

Comments are closed.

Post Navigation