잠입
시간 제한10초메모리 제한128 MB
토너먼트 방향 그래프에서 닫힌 외향 이웃들의 합집합이 모든 정점을 덮는 최소 정점 집합을 구하고, 사전순으로 가장 작은 답을 출력한다.
문제
어떤 조직의 지휘 체계는 여러 개의 세포로 나뉘어 있다. 서로 다른 두 세포 , 에 대해 다음 중 정확히 하나가 성립한다: 가 를 지배하거나, 가 를 지배한다. 이 "지배" 관계는 순환할 수 있어서, 가 를, 가 를, 가 를 지배하는 일도 가능하다.
당신은 임의의 세포 하나에 침투할 수 있다. 어떤 세포에 침투하면 그 세포와 그 세포가 지배하는 모든 세포를 장악하게 되며, 그 밖의 세포는 장악하지 못한다. 위의 순환 예시에서 에 침투하면 와 가 지배하는 세포 를 장악하지만, 는 장악하지 못한다.
작전이 성공하려면 모든 세포를 장악해야 하며, 장악하지 못한 세포가 하나라도 남으면 작전이 발각된다. 자원이 넉넉하지 않으므로 작전은 최대한 효율적으로 수행해야 한다. 침투한 세포들과 그 세포들이 지배하는 세포들을 합쳐 모든 세포를 장악하기 위해 침투해야 하는 세포의 최소 개수를 구하여라.
입력
입력은 하나 이상의 테스트 케이스로 이루어지며, 파일의 끝까지 계속된다.
각 테스트 케이스의 첫째 줄에는 세포의 수 이 주어진다 (). 이어지는 개의 줄에는 각각 길이 인 이진 문자열이 주어진다. 번째 줄의 번째 문자가 이면 세포 가 세포 를 지배하고, 이면 그렇지 않다 ().
번째 줄의 번째 문자는 이며, 인 경우 번째 줄의 번째 문자와 번째 줄의 번째 문자 중 정확히 하나만 이다(둘 다 인 경우는 없다).
출력
각 테스트 케이스마다 Case X: m c1 c2 ... cm 형식으로 한 줄을 출력한다. 여기서 X는 테스트 케이스 번호(부터 시작), m은 모든 세포를 완전히 장악하기 위해 침투해야 하는 세포의 최소 개수이다. m 다음에는 그러한 최소 집합에 속하는 세포 번호 c1 c2 ... cm을 엄밀히 증가하는 순서로 출력한다. 그러한 최소 집합이 여러 개이면, 세포 번호를 오름차순으로 나열한 수열이 사전순으로 가장 작은 집합을 출력한다.