#5746. 宝石匠的困惑
宝石匠的困惑
题目描述
Alice 是一名宝石匠,她正在设计一枚戒指,但是她发现有些宝石的形状很奇怪,她想要优化这些宝石,使其形状更加合理。
宝石的形状可以用一个× (1≤N≤1000)的矩形图案表示。每个 . 字符表示空的区域,每个 # 字符表示一颗宝石的一部分。
不幸的是,机器当前工作得并不是很正常,可能会生产出多个互不相连的宝石。如果其中每个正方形格子都可以从这个格子出发前往上、下、左、右四个方向上相邻的格子所到达,那么它们就属于同一个宝石,否则它们属于不同的宝石。
Alice 想要求出面积最大的宝石的面积和周长。宝石的面积就是这个宝石中 # 的数量。如果有多颗宝石并列面积最大,她想要知道其中周长最小的宝石的周长。
由于这种宝石十分独特,Alice 计算周长时,会根据边缘点个数计算,也就是如果某一个 . 有多个 # 相连,那么这个 . 就会被多次计算。
例如:
###
#.#
###
上图的面积会被计算为 8,周长会被计算为 16。
输入
第一行输入包含 ,下面的 行描述了宝石的摆放情况。
测试数据保证,至少会有一个 # 字符。
输出
请输出包含两个用空格分隔的整数的一行,第一个整数是最大块的面积,第二个整数是它的周长。
如果有多个块的面积相同,请为其中周长最小的块打印信息。
样例
输入复制
3
###
#.#
###
输出复制
8 16
输入复制
6
##....
....#.
.#..#.
.#####
...###
....##
输出复制
13 22
输入复制
6
......
.##...
.##...
......
.####.
......
输出复制
4 8
说明
【数据范围】 1≤N≤1000
【样例 1 解释】
如下图所示,计算周长时:# 周围各计算一次,即:如果 #恰好在矩形的边缘上,矩形外面需要视为是 . 统计到周长中。
中间 . 由于与多个#相连,则要计算多次,所以周长为 12 + 4 = 16 。

【样例 2 解释】
右下角的宝石面积更大一些,面积为 13,周长为 22。
【样例 3 解释】
两个宝石面积一样大,面积都为 4, 上方的宝石周长更小。