8방향으로 연결된 섬과 4방향으로 연결된 바다가 있는 지도에서 섬이 다른 섬을 감싸는 포함 구조를 찾아 높이별 섬의 개수를 구하는 문제입니다.
어려움8BFS그래프트리행렬아직 제출이 없습니다시간 제한2초메모리 제한128 MB지민이는 보물을 찾으러 떠나기 위해 섬과 바다가 그려진 지도를 샀다. 지도는 N×M 직사각형이며, 각 칸에는 x 또는 .가 적혀 있다.
바다는 . 칸들이 가로 또는 세로로 최대한 연결된 그룹이다. 섬은 x 칸들이 가로, 세로, 또는 대각선으로 최대한 연결된 그룹이다.
다른 섬을 하나도 포함하지 않는 섬의 높이는 0이다. 어떤 섬 A가 포함하는 섬들 중 가장 높은 높이가 K라면, 섬 A의 높이는 K+1이다.
섬 A가 섬 B를 포함한다는 것은 A와 B가 서로 다른 섬이고, 섬 B의 어느 칸에서 출발해도 섬 A의 밖으로 나갈 수 없다는 뜻이다. 이때 이동은 가로 또는 세로로만 할 수 있으며, 대각선 이동은 할 수 없다.
다음 지도는 섬의 번호를 함께 표시한 예시이다.
xxx.x...xxxxx 000.0...11111
xxxx....x...x 0000....1...1
........x.x.x ........1.4.1
..xxxxx.x...x ..55555.1...1
..x...x.xxx.x ..5...5.111.1
..x.x.x...x.. ..5.3.5...1..
..x...x...xxx ..5...5...111
...xxxxxx.... ...555555....
x............ 2............
이 지도에는 섬이 총 6개 있다. 높이가 0인 섬은 5개(0~4)이고, 높이가 1인 섬은 1개(5)이다. 3번 섬에서 출발하면 5번 섬의 밖으로 나갈 수 없으므로 5번 섬은 3번 섬을 포함한다. 반면 4번 섬에서는 1번 섬의 밖으로 나갈 수 있으므로 1번 섬은 4번 섬을 포함하지 않는다.
지도가 주어졌을 때, 높이가 0인 섬의 개수부터 가장 높은 섬의 높이 H에 대한 높이 H인 섬의 개수까지 차례대로 출력하라.
첫째 줄에 자연수 N과 M이 주어진다. N과 M은 각각 50 이하이다.
둘째 줄부터 N개의 줄에 섬의 지도가 주어진다.
섬이 하나도 없으면 -1을 출력한다.
그렇지 않다면 높이가 0인 섬의 개수, 높이가 1인 섬의 개수, ..., 높이가 H인 섬의 개수를 공백으로 구분해 출력한다. H는 지도에 있는 섬 중 가장 높은 높이이다.