국보

시간 제한1초메모리 제한128 MB

요약
각 유물이 비트마스크로 주어진 감시 지점들을 가지는 격자에서, 일부 유물을 고용 경비로 바꾸어 남은 모든 유물의 감시 지점에 경비가 서 있도록 하면서 고용 수를 최소화한다.
난이도

어려움10점 중 8점

유형
그리디, 최소 신장 트리, 완전 탐색, 시뮬레이션
정답자
아직 제출이 없습니다

문제

최근 국립 박물관의 대전시실이 여러 차례 도난을 당해, 전시 중인 보물들의 안전을 모두가 걱정하고 있다. 박물관은 전시실을 지키기 위해 경비원을 추가로 고용해 유물들을 감시하게 하려 한다. 이때 전시실 전체가 안전하도록 만드는 데 필요한 최소 인원의 추가 경비원을 고용하고자 한다.

대전시실은 R×CR \times C 칸으로 이루어진 격자이다. 일부 칸에는 이미 박물관의 경비원이 서 있고, 나머지 칸에는 각각 어떤 종류의 유물(조각상, 조형물 등)이 놓여 있다. 유물은 새로 고용한 경비원으로 교체할 수 있지만, 경비원은 유물이 그대로 놓여 있는 칸에는 설 수 없으며, 유물을 단순히 치워 칸을 비워 둘 수도 없다. 즉 유물이 놓인 각 칸에 대해, 유물을 그대로 두거나 고용한 경비원으로 교체하는 두 가지 선택만 가능하다.

각 유물에는 핵심 지점들이 정해져 있다. 이는 그 유물을 전시실에 계속 두려면 반드시 경비원이 서 있어야 하는 칸들이다. 한 경비원이 여러 유물의 핵심 지점인 칸에 서 있으면, 그 유물들을 한꺼번에 감시할 수 있다. 임의의 유물의 핵심 지점은 항상 그 유물을 둘러싼 12개 칸의 부분집합이며, 아래 그림처럼 1번부터 12번까지 번호가 매겨져 있다(X는 유물 자신을 나타내고, 각 숫자는 그 번호의 핵심 지점을 나타낸다):

 .  2  .  3  .
 1  .  9  .  4
 . 12  X 10  .
 8  . 11  .  5
 .  7  .  6  .

유물의 종류는 음이 아닌 정수로 표현한다. 가장 낮은 자리 비트를 11번 비트로 셀 때, 이 정수의 ii번째 비트가 11이라는 것은 ii번 핵심 지점이 그 유물의 핵심 지점이라는 뜻이다. 예를 들어 종류가 595595(22진수로 10010100111001010011)인 유물의 핵심 지점은 {1,2,5,7,10}\{1, 2, 5, 7, 10\}이다. 유물의 핵심 지점이 격자 밖에 있으면, 그 지점은 자동으로 안전한 것으로 본다.

대전시실의 배치가 주어질 때, 남아 있는 모든 유물이 안전하도록 만드는 데 필요한 추가 경비원의 최소 인원을 구하여라.

입력

입력은 하나 이상의 테스트 케이스로 이루어진다. 각 테스트 케이스는 전시실의 크기를 나타내는 두 정수 RR, CC(1≤R,C≤501 \le R, C \le 50)가 적힌 줄로 시작한다. 이어지는 RR개의 줄에는 각각 한 개 이상의 공백으로 구분된 CC개의 정수가 있다. ii번째 줄의 jj번째 정수는, 칸 (i,j)(i, j)에 이미 박물관 경비원이 있으면 −1-1이고, 그렇지 않으면 그 칸에 놓인 유물의 종류를 나타내는 정수 TT(0≤T<2120 \le T < 2^{12})이다.

입력의 끝은 두 개의 00이 적힌 줄로 표시되며, 이 종료 줄은 테스트 케이스가 아니다.

출력

각 테스트 케이스마다 다음 형식으로 한 줄을 출력한다:

k. G

여기서 kk는 테스트 케이스 번호(11부터 시작)이고, GG는 남아 있는 모든 유물이 안전하도록 만들기 위해 고용해야 하는 추가 경비원의 최소 인원이다.

예제1

  1. 예제 1

    입력
    1 3
    512 -1 2048
    2 3
    512 2560 2048
    512 2560 2048
    0 0
    
    예상 출력
    1. 0
    2. 2