모자이크 타일

구멍(0)이 있는 H×L 격자에서 모든 구멍을 하나의 색으로 채워 가장 작은 단색 영역의 크기를 최대한 크게 만들고, 그 크기를 출력한다.

보통6그래프유니온 파인드BFS구현면접 대비아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

아벨리노의 집 벽 하나에는 모자이크가 있다. 아주 오래된 모자이크로, 작은 색 타일을 촘촘히 붙여 만들었다. 세월이 지나면서 타일 몇 개가 떨어져 구멍이 생겼다.

아벨리노는 구멍을 새 타일로 덮어 모자이크를 복원하려고 한다. 비용을 아끼려고 구멍은 한 가지 색 타일로만 메운다. 이때 모자이크에 이미 있는 색 하나를 고르거나, 모자이크에 없는 색 하나를 고른다.

모자이크인 만큼 같은 색이 넓게 이어지는 것은 좋지 않다. 아벨리노는 세밀한 느낌을 살리려고 가장 작은 단색 영역의 크기가 최소가 되도록 색을 고른다. 그 최솟값을 만드는 색이 여러 개일 수도 있다. 영역에 속한 타일이 모두 같은 색이면 그 영역은 단색이다. 인접한 두 타일은 색이 같으면 같은 영역에 속하고, 두 타일은 변을 맞대고 있으면 인접하다.

첫 번째 예제를 보자. 색 1인 영역이 세 개(크기 3인 것 하나, 크기 2인 것 둘), 색 2인 영역이 하나(크기 3), 색 3인 영역이 하나(크기 7) 있다. 색 2를 고르면 가장 작은 단색 영역의 크기가 2가 된다. 색 1을 고르면 3이 된다.

가장 작은 단색 영역의 크기로 만들 수 있는 최솟값을 출력하는 프로그램을 작성하라.

입력

첫째 줄에 모자이크의 높이 HH와 너비 LL이 공백으로 구분되어 주어진다. 이어지는 HH개의 줄에는 각각 타일의 색을 나타내는 정수 LL개가 공백으로 구분되어 주어진다. 정수 0은 구멍이고, 0이 아닌 정수 ii는 색이 ii인 타일이다.

제약

  • 1H,L2001 \le H, L \le 200
  • 1i400001 \le i \le 40000

출력

가장 작은 단색 영역의 크기로 만들 수 있는 최솟값을 한 줄에 출력한다.