#BW210. 动物群落

动物群落

题目描述

在广袤的塞伦盖蒂草原上,生态学家小蓝正在进行一项关于野生动物社会性聚集行为的研究。他将观测区域划分成了一个 n×mn \times m 的矩形网格,每个格子代表一个 10 m×10 m10 \text{ m} \times 10 \text{ m} 的样方。通过为期一个月的红外相机监测和足迹分析,小蓝记录了每个样方内是否存在动物活动痕迹:

  • * 表示该样方内未检测到任何动物(完全空置)。
  • 字母 A ~ I 分别代表九种不同物种的动物个体(例如 A=非洲狮,B=斑马,C=羚羊,D=长颈鹿,E=大象,F=犀牛,G=河马,H=鬣狗,I=角马)。

动物行为学研究表明:动物倾向于与邻近的同类或异类个体形成临时或永久的群体。当两个动物个体所在的样方在上下左右以及对角线方向上直接相邻时,它们之间便存在直接的空间接触机会,从而被视为属于同一个聚集群落。也就是说,即使两个群落仅在对角位置接触,也会被合并为一个群落。群落定义不区分物种——不同种类的动物只要空间相邻,就属于同一个群落。

小蓝的研究目标是统计整个观测区域内互不相连的群落总数,这是评估区域生态连通性和栖息地破碎化程度的重要指标。请你编写程序帮助小蓝完成这项计数任务。

输入格式

第一行两个整数 n,mn, m,分别表示网格的行数和列数(1n,m1001 \le n, m \le 100)。
接下来 nn 行,每行一个长度为 mm 的字符串,仅包含字符 *A ~ I,依次表示每一行每个样方的状态。

输出格式

一个整数,表示该网格中动物群落的个数。

输入输出样例

8 10
AAB***CCC*
A*B***C*C*
AAB*DD**C*
****DD****
EE****FFF*
E*****F*F*
EE**GG**F*
****GG****
3