#CF723d. D. 贝兰德的湖泊

    ID: 6962 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>DFS及类似情况达科他州立大学图表贪婪实现*1600

D. 贝兰德的湖泊

D. 贝兰德的湖泊
每个测试的时间限制:22
内存限制:256256 兆字节

贝兰德的地图是一个大小为 n×mn \times m 的矩形,由 1×11 \times 1 的单元格组成。每个单元格要么是陆地,要么是水域。地图被海洋包围。

湖泊 是指由边相连的水域单元格构成的最大连通区域,并且这些单元格不与海洋相连。
形式化地说,湖泊是一个水域单元格的集合,满足:

  • 从集合中任意一个单元格出发,可以通过只走上下左右相邻的单元格,且不离开该集合,到达集合中的任意其他单元格;
  • 集合中没有任何一个单元格位于矩形的边界上;
  • 无法再向集合中添加一个水域单元格,使其仍保持与集合中其它单元格连通。

你的任务是用土地填埋最少数量的水域单元格,使得地图中恰好剩下 kk 个湖泊。
注意:初始地图中的湖泊数量一定不少于 kk

输入
第一行包含三个整数 n,m,kn, m, k1n,m501 \le n, m \le 500k500 \le k \le 50)—— 地图的尺寸,以及最终应保留的湖泊数量。

接下来 nn 行,每行包含 mm 个字符,表示地图。
每个字符要么是 '.'(表示水域),要么是 '*'(表示陆地)。

数据保证地图中至少有 kk 个湖泊。

输出
第一行输出一个整数,表示需要从水域变为陆地的最少单元格数量。

接下来 nn 行,每行 mm 个字符,表示修改后的地图。
输出格式必须严格与输入格式相同(不需要输出地图的尺寸)。
如果有多种答案,输出任意一种即可。

数据保证存在符合要求的答案。

示例
输入

5 4 1
****
*..*
****
**.*
..**

输出

1
****
*..*
****
****
..**

输入

3 3 0
***
*.*
***

输出

1
***
***
***