#P1979. Red and Black
Red and Black
描述
这是一个矩形房间,铺满了方形瓷砖。每块瓷砖的颜色要么是红色,要么是黑色。一个人站在一块黑色瓷砖上。从一块瓷砖上,他可以移动到四个相邻的瓷砖中的一个。但他不能移动到红色瓷砖上,他只能移动到黑色瓷砖上。编写一个程序来计算他可以通过重复上述移动到达的黑色瓷砖的数量。
输入
输入由多个数据集组成。一个数据集以一行两个正整数 W 和 H 开始;W 和 H 分别是 x 方向和 y 方向的瓷砖数量。W 和 H 不超过 20。数据集中还有 H 行,每行包含 W 个字符。每个字符表示瓷砖的颜色如下。
'.' - 黑色瓷砖
'#' - 红色瓷砖
'@' - 在黑色瓷砖上的人(在一个数据集中正好出现一次)
输入的结束由一行两个零表示。
输出
对于每个数据集,你的程序应输出一行,其中包含他从初始瓷砖出发能够到达的瓷砖数量(包括初始瓷砖本身)。
样例输入
6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
11 9
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#..@#.#.
.#.#####.#.
.#.......#.
.#########.
...........
11 6
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
7 7
..#.#..
..#.#..
###.###
...@...
###.###
..#.#..
..#.#..
0 0
样例输出
45
59
6
13
来源
日本2004国内赛