모양 만들기

면접 대비

시간 제한2초메모리 제한512 MB

요약
0과 1로 이루어진 격자에서 0 한 칸을 1로 바꿨을 때 만들 수 있는 가장 큰 1 연결 덩어리의 크기를 구한다.
난이도

보통10점 중 6점

유형
그래프, DFS, 유니온 파인드, 해시맵
정답자
아직 제출이 없습니다

문제

N×MN \times M 배열에서 모양을 찾으려고 한다. 배열의 각 칸에는 0과 1 중 하나가 들어 있다. 두 칸이 변을 공유하면 두 칸은 인접하다고 한다.

1이 들어 있는 인접한 칸끼리 연결했을 때, 각각의 연결 요소를 모양이라고 부르자. 모양의 크기는 그 모양에 포함된 1의 개수이다.

배열의 칸 하나에 들어 있는 수를 바꿔서 만들 수 있는 모양의 최대 크기를 구해 보자.

입력

첫째 줄에 배열의 크기 NN과 MM이 주어진다. 둘째 줄부터 NN개의 줄에는 배열에 들어 있는 수가 주어진다.

출력

첫째 줄에 수 하나를 바꿔서 만들 수 있는 모양의 최대 크기를 출력한다.

제한

  • 2≤N,M≤1,0002 \le N, M \le 1{,}000
  • 0과 1의 개수는 각각 하나 이상이다.

예제3

  1. 예제 1

    입력
    3 3
    0 1 1
    0 0 1
    0 1 0
    
    예상 출력
    5
    
  2. 예제 2

    입력
    5 4
    1 1 0 0
    1 0 1 0
    1 0 1 0
    0 1 1 0
    1 0 0 1
    
    예상 출력
    10
    
  3. 예제 3

    입력
    3 4
    0 1 0 1
    0 0 0 1
    1 1 0 1
    
    예상 출력
    6