Icy Perimeter
농부 존은 아이스크림 사업을 시작하려고 합니다! 그는 아이스크림 덩어리를 생산하는 기계를 만들었지만, 아쉽게도 생산되는 모양이 다소 불규칙하여 기계를 개선하고자 합니다.
기계에서 출력되는 아이스크림의 배치는 다음과 같이 \(N \times N\) 크기의 격자(\(1 \le N \le 1000\))로 나타낼 수 있습니다.
##....
....#.
.#..#.
.#####
...###
....##
각 \(.\) 문자는 빈 공간을 나타내고, 각 # 문자는 \(1 \times 1\) 크기의 아이스크림 칸을 나타냅니다.
현재 기계가 제대로 작동하지 않아 여러 개의 서로 떨어진 아이스크림 덩어리가 생성될 수 있습니다. (위 예시에는 2개의 덩어리가 있습니다.)
아이스크림 덩어리 내의 임의의 칸에서 상, 하, 좌, 우 인접한 아이스크림 칸으로 이동하여 다른 모든 칸에 도달할 수 있다면 해당 덩어리는 "연결되어 있다"고 합니다.
농부 존은 가장 넓은 넓이를 가진 아이스크림 덩어리의 넓이와 둘레를 구하고 싶어 합니다.
덩어리의 넓이는 덩어리를 구성하는 # 칸의 개수입니다. 만약 넓이가 가장 큰 덩어리가 여러 개라면, 그중 둘레가 가장 작은 것의 정보를 알고 싶어 합니다.
위 예시에서 더 작은 덩어리는 넓이 2, 둘레 6이고, 더 큰 덩어리는 넓이 13, 둘레 22입니다.
참고로 덩어리 중앙에 "구멍"(아이스크림으로 둘러싸인 빈 공간)이 있을 수도 있으며, 이 경우 구멍과 접한 경계선도 둘레에 포함됩니다.
또한 덩어리가 다른 덩어리 내부에 중첩되어 나타날 수도 있으며, 이 경우 각각 별개의 덩어리로 취급됩니다.
입력
첫째 줄에 \(N\)이 주어진다. (\(1 \le N \le 1000\))
둘째 줄부터 \(N\)개의 줄에 걸쳐 기계의 출력을 나타내는 \(N \times N\) 격자가 주어진다. 최소 하나 이상의 # 문자가 존재함이 보장된다.
출력
가장 넓은 아이스크림 덩어리의 넓이와 둘레를 공백으로 구분하여 한 줄에 출력한다.
만약 넓이가 가장 큰 덩어리가 여러 개라면, 그중 둘레가 가장 작은 덩어리의 넓이와 둘레를 출력한다.
예제 입력 1
6
##....
....#.
.#..#.
.#####
...###
....##
예제 출력 1
13 22
출처
USACO 2019 January Contest, Silver
코멘트