#1085. 古城供水系统

2

古城供水系统

题目背景

考古队在湖底发现了一座沉入水中的古城。古城的地下蓄水池结构复杂,外围环绕着一圈暗河,泉水一旦流到边界便会顺着暗河流走。

题目描述

古城的地下蓄水池可以用一个 n×mn \times m 的方格表示。蓄水池中的每个格子分为三种:

  • # 表示石墙,水无法穿过;
  • . 表示空地,水可以流过;
  • S 表示泉眼,属于空地的一种,是水流的源头。

水从泉眼出发,可以向上、下、左、右四个方向流动,遇到石墙时停止。被泉水覆盖的空地均会成为水域。

古城外围环绕着一圈暗河:所有紧贴地图边界的空地都直接与暗河相连。泉水一旦流到这些格子,就会顺着暗河流走并消失,不会再从这些格子向地图内部扩散,暗河中的水也不计入古城的蓄水量。

请计算古城内部最终能够蓄住水的空地(含泉眼)共有多少个格子。

输入格式

第一行两个整数 n,mn, m

接下来 nn 行,每行 mm 个字符(不含空格),为 #.S 之一。地图中恰好包含一个 S

输出格式

输出一行一个整数,表示能够蓄住水的空地数量(含泉眼)。若泉水全部流入暗河,则输出 00

样例输入 #1

6 9
.........
.#######.
.#S....#.
.#.....#.
.#######.
.........

样例输出 #1

10

样例说明 #1

泉眼位于一个被石墙完全封闭的内部房间内,房间共有 1010 个空地,且与边界暗河完全隔开,因此这 1010 个格子均可蓄水。房间外的空地均紧贴边界或与边界连通,泉水会流入暗河,不计入答案。

提示

【数据范围】

对于全部测试数据,3n,m10003 \le n, m \le 1000,地图中恰好包含一个 S

各子任务如下:

子任务编号 分值 n,mn, m \le
1 60 100
2 40 1000