잠입

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

요약
토너먼트 방향 그래프에서 닫힌 외향 이웃들의 합집합이 모든 정점을 덮는 최소 정점 집합을 구하고, 사전순으로 가장 작은 답을 출력한다.
난이도

어려움10점 중 8점

유형
그래프, 그리디, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

어떤 조직의 지휘 체계는 여러 개의 세포로 나뉘어 있다. 서로 다른 두 세포 AA, BB에 대해 다음 중 정확히 하나가 성립한다: AA가 BB를 지배하거나, BB가 AA를 지배한다. 이 "지배" 관계는 순환할 수 있어서, AA가 BB를, BB가 CC를, CC가 AA를 지배하는 일도 가능하다.

당신은 임의의 세포 하나에 침투할 수 있다. 어떤 세포에 침투하면 그 세포와 그 세포가 지배하는 모든 세포를 장악하게 되며, 그 밖의 세포는 장악하지 못한다. 위의 순환 예시에서 AA에 침투하면 AA와 AA가 지배하는 세포 BB를 장악하지만, CC는 장악하지 못한다.

작전이 성공하려면 모든 세포를 장악해야 하며, 장악하지 못한 세포가 하나라도 남으면 작전이 발각된다. 자원이 넉넉하지 않으므로 작전은 최대한 효율적으로 수행해야 한다. 침투한 세포들과 그 세포들이 지배하는 세포들을 합쳐 모든 세포를 장악하기 위해 침투해야 하는 세포의 최소 개수를 구하여라.

입력

입력은 하나 이상의 테스트 케이스로 이루어지며, 파일의 끝까지 계속된다.

각 테스트 케이스의 첫째 줄에는 세포의 수 nn이 주어진다 (1≤n≤751 \le n \le 75). 이어지는 nn개의 줄에는 각각 길이 nn인 이진 문자열이 주어진다. jj번째 줄의 ii번째 문자가 11이면 세포 jj가 세포 ii를 지배하고, 00이면 그렇지 않다 (1≤i,j≤n1 \le i, j \le n).

ii번째 줄의 ii번째 문자는 00이며, i≠ji \ne j인 경우 jj번째 줄의 ii번째 문자와 ii번째 줄의 jj번째 문자 중 정확히 하나만 11이다(둘 다 11인 경우는 없다).

출력

각 테스트 케이스마다 Case X: m c1 c2 ... cm 형식으로 한 줄을 출력한다. 여기서 X는 테스트 케이스 번호(11부터 시작), m은 모든 세포를 완전히 장악하기 위해 침투해야 하는 세포의 최소 개수이다. m 다음에는 그러한 최소 집합에 속하는 세포 번호 c1 c2 ... cm을 엄밀히 증가하는 순서로 출력한다. 그러한 최소 집합이 여러 개이면, 세포 번호를 오름차순으로 나열한 수열이 사전순으로 가장 작은 집합을 출력한다.

예제3

  1. 예제 1

    입력
    2
    00
    10
    3
    010
    001
    100
    5
    01000
    00011
    11001
    10100
    10010
    
    예상 출력
    Case 1: 1 2
    Case 2: 2 1 2
    Case 3: 2 2 3
    
  2. 예제 2

    입력
    1
    0
    
    예상 출력
    Case 1: 1 1
    
  3. 예제 3

    입력
    4
    0111
    0011
    0001
    0000
    
    예상 출력
    Case 1: 1 1