#3717. USACO 2011 年 11 月比赛 铜牌组 Cow Beauty Pageant (Bronze Level)

USACO 2011 年 11 月比赛 铜牌组 Cow Beauty Pageant (Bronze Level)

题目描述

听说最新的流行趋势是牛身上有两个斑点,Farmer John 购买了一整群“两点奶牛”。
不幸的是,时尚潮流往往变化很快,现在最流行的竟然是“单斑点”奶牛!

FJ 希望通过给每头奶牛涂油漆,把它的两个斑点合并成一个。
牛皮被描述为一个 N×MN \times M 的字符网格(1N,M501\le N,M\le 50),每个字符只能是:

  • X:表示斑点的一部分;
  • .:表示空白皮肤。

两个 X 如果上下或左右相邻(对角线不算)则属于同一个斑点。
FJ 保证每头奶牛恰好只有两个斑点

你的任务是:用最少的额外 X 把这两个斑点连成一个大斑点,输出需要新增 X 的最小数量。

输入格式

  • 第 1 行:两个空格分隔的整数 NNMM
  • 2N+12\sim N+1 行:每行一个长度为 MM 的字符串,仅含字符 X.,表示牛皮图案。

输出格式

  • 第 1 行:一个整数,表示需要新增的最少 X 数量。

样例

样例输入

6 16
................
..XXXX....XXX...
...XXXX....XX...
.XXXX......XXX..
........XXXXX...
.........XXX....

样例输出

3

数据范围与提示

  • 1N,M501\le N,M\le 50
  • 网格中恰好有两个连通块(斑点)。
  • 只能上下左右移动,不能对角线移动。