개미굴

자유 칸과 벽으로 이루어진 격자에서 2x2 씨앗으로 만들어지는 방을 모두 찾아 각 방의 크기와 직접 연결된 방의 수를 출력한다.

보통6그래프BFS유니온 파인드아직 제출이 없습니다시간 제한0.5초메모리 제한256 MB

문제

개미굴 지하 한 층의 평면도는 RRSS열의 격자로 나타낼 수 있다. 격자의 각 칸은 빈칸이거나 벽이다. 한 빈칸에서 위, 아래, 왼쪽, 오른쪽으로 인접한 빈칸으로 한 칸씩 이동해서 다른 빈칸에 도달할 수 있으면 두 빈칸은 연결되어 있다고 한다.

방은 연결된 빈칸의 모임으로, 어느 부분에서나 폭이 2칸 이상이다. 정확히는 다음 조건을 만족하는 빈칸의 집합을 방이라고 한다.

  • 방에는 가로 2칸, 세로 2칸의 정사각형을 이루는 빈칸 4개가 있다.
  • 이 4칸 위에 2×22 \times 2 크기의 조각을 올려놓았을 때, 조각을 빈칸 위로만 위, 아래, 왼쪽, 오른쪽으로 옮겨서 도달할 수 있는 빈칸이 정확히 그 방에 속하는 칸이다.

한 칸이 서로 다른 여러 방에 동시에 속할 수도 있다. 예를 들어 다음 개미굴에는 크기가 4인 방이 두 개 있고, 가운데 칸은 두 방 모두에 속한다.

#..
...
..#

한 방의 어떤 칸에서 다른 방의 어떤 칸까지 빈칸을 따라 위, 아래, 왼쪽, 오른쪽으로 이동해서 제3의 방에 속한 칸을 지나지 않고 도달할 수 있으면 두 방은 직접 연결되어 있다고 한다. 물론 두 방이 공유하는 칸이 있으면 두 방은 직접 연결되어 있다. 한 칸이 세 개 이상의 방에 속하는 경우는 없다.

개미굴의 모든 방을 찾아서, 각 방의 크기(방에 속한 칸의 수)와 그 방과 직접 연결된 방의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 개미굴의 행 수와 열 수를 나타내는 자연수 RRSS가 주어진다. (2R,S1002 \le R, S \le 100)

다음 RR개의 줄에는 개미굴의 한 행을 나타내는 SS개의 문자가 주어진다. 빈칸은 .(점), 벽은 #로 나타낸다.

개미굴에는 항상 방이 하나 이상 있다.

출력

개미굴에 있는 방의 수만큼 줄을 출력한다. 각 줄에는 한 방의 크기와 그 방과 직접 연결된 방의 수를 공백으로 구분해서 출력한다.

방은 크기가 큰 것부터 작은 순서로 출력한다. 크기가 같으면 직접 연결된 방이 더 많은 방을 먼저 출력한다.