#P15204. [SWERC 2018] Mason' s Mark

[SWERC 2018] Mason' s Mark

说明

石匠标记是常见于建筑物或其他公共结构砌石上的符号。当 Peter 带着相机穿过巴黎时,他在无畏塔(Tour Jean-Sans-Peur)的墙壁上注意到了这些标记。每块石头上都有一个相当醒目的标记 A、B 或 C。他拍摄了一张黑白照片并观察到:

  • 照片显示了石头,每块石头恰好包含一个标记。
  • 所有标记都具有以下形状之一,其中 xxyy 是任意的严格正整数,并且可能每个标记都不同。注意标记被白色像素包围,并且标记不能旋转。

:::align{center} :::

  • 照片包含一些噪点,即被 8 个白色像素包围的黑色像素。
  • 黑色像素有三种,分别对应噪点、石匠标记和石头周围区域。
  • 每个白色像素都属于石头的表面,其中一些也属于标记的内部。
  • 属于同一石头表面但不属于标记内部的白色像素在垂直和水平邻接意义下都是连通的。然而,石头的表面可能是非凸的。
  • 石头周围区域的黑色像素在垂直、水平、对角线和反对角线邻接意义下是连通的,这意味着你可以通过从一个像素移动到其八个相邻像素之一,从石头周围区域的任意黑色像素到达任何其他此类像素。图片边框的所有像素都是黑色的,并且属于该区域。

给你一个表示 Peter 拍摄的照片的矩形矩阵。字符 # 表示黑色像素,字符 . 表示白色像素。你应该统计照片中有多少块石头分别带有字母 A、B 和 C。

输入格式

第一行包含两个整数 WWHH。接下来的 HH 行每行包含一个长度为 WW 的字符串。字符串由 .# 组成。

输出格式

输出应包含一行,内容为三个整数 AABBCC,用单个空格分隔,表示带有相应标记 A、B 和 C 的石头数量。

26 15
##########################
##........######......#..#
#...###....#####..#......#
#...#.#....####.........##
#...###.....##....#####..#
#...#.#.....#.....#####..#
#...###.....#.....##.##..#
#........#..#.#...#####..#
#..###......#.....#####..#
#..#........#...#.##.##..#
#..#........#.....##.##..#
#..#...#.#..#...#.##.##..#
#..###......#............#
###....#....##....##.....#
##########################
1 1 0

提示

样例解释

有一些黑色像素形成了字母 C。然而,这些像素属于石头周围的区域,并不构成标记,因为它们没有被白色像素包围。

数据范围

  • 7W10007 \leq W \leq 1000
  • 9H10009 \leq H \leq 1000

翻译由 DeepSeek 完成