아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

버섯 농장

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

요약
버섯이 자랄 수 있는 칸으로 이루어진 격자에서 각 연결 성분마다 필요한 포자 수를 세어, M개 이하로 모든 칸을 덮을 수 있는지 판정하고 남은 포자 개수를 출력한다.
난이도

보통10점 중 5점

유형
그래프, BFS, 그리디, 수학
정답자
아직 제출이 없습니다

문제

농부 해강이는 N×NN \times N 칸으로 이루어진 나무판에서 버섯 농사를 짓는다. 나무판은 버섯이 자랄 수 있는 칸과 없는 칸으로 이루어져 있다.

해강이는 MM개의 버섯 포자를 가지고 있다. 버섯 포자는 버섯이 자랄 수 있는 칸에만 심을 수 있다.

각 버섯 포자는 포자가 심어진 칸을 포함해 최대 KK개의 연결된 (버섯이 자랄 수 있는) 칸에 버섯을 자라게 한다. 이때 연결된 칸은 상하좌우로 적어도 한 변을 공유하는 칸들의 집합이라고 정의한다.

또한 한 칸에 버섯 포자를 여러 개 겹쳐서 심을 수 있으며, 만약 xx개의 버섯 포자를 겹쳐 심으면 포자가 심어진 칸을 포함해 최대 x×Kx \times K개의 연결된 (버섯이 자랄 수 있는) 칸에 버섯이 자란다.

<그림 1> K=4K = 4일 때 버섯이 자라는 모습이다.

<그림 2> K=10K = 10일 때 버섯이 자라는 모습이다.

해강이는 버섯 포자를 심을 때 최소 개수로만 심으려고 한다. 해강이가 농사가 가능할지 판단하고, 농사가 가능하다면 남은 버섯 포자의 개수를 출력하시오.

버섯 포자를 하나라도 사용하고 버섯이 자랄 수 있는 모든 칸에 버섯이 전부 자랐을 때 농사가 가능하다고 정의한다.

입력

첫 번째 줄에 NN, MM, KK가 공백으로 구분되어 주어진다.

두 번째 줄부터 NN개의 줄에 나무판의 각 칸의 상태가 공백으로 구분되어 주어진다.

버섯이 자랄 수 있는 칸은 0, 버섯이 자랄 수 없는 칸은 1로 주어진다.

출력

만약 버섯 농사가 불가능하면 IMPOSSIBLE을 출력한다.

버섯 농사가 가능하다면, POSSIBLE을 출력하고 다음 줄에 남은 버섯 포자의 개수를 출력한다.

제한

  • 1≤N≤1001 \leq N \leq 100
  • 0≤M≤1,000,0000 \leq M \leq 1\\,000\\,000
  • 1≤K≤1081 \leq K \leq 10^8
  • N,M,KN, M, K는 모두 정수이다.

예제4

  1. 예제 1

    입력
    5 100 1
    1 1 1 0 0
    1 0 1 0 0
    0 0 1 1 1
    1 1 0 0 0
    0 1 1 0 1
    
    예상 출력
    POSSIBLE
    88
    
  2. 예제 2

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

    입력
    5 100 3
    1 1 1 0 0
    1 0 1 0 0
    0 0 1 1 1
    1 1 0 0 0
    0 1 1 0 1
    
    예상 출력
    POSSIBLE
    94
    
  4. 예제 4

    입력
    5 5 3
    1 1 1 0 0
    1 0 1 0 0
    0 0 1 1 1
    1 1 0 0 0
    0 1 1 0 1
    
    예상 출력
    IMPOSSIBLE