목표 기술과 이에 필요한 선행 기술을 모두 모아 사전 순으로 가장 앞선 연구 순서와 개수를 출력합니다.
보통5위상 정렬그래프면접 대비아직 제출이 없습니다시간 제한5초메모리 제한512 MB문명 시뮬레이션 게임에서 문명은 여러 기술을 개발한다. 어떤 기술은 다른 기술에 의존한다. 기술 A가 기술 B에 의존하면, B를 개발한 뒤에야 A를 개발할 수 있다. 문명은 한 번에 기술 하나만 개발한다.
게임에는 특정 기술을 요구하는 목표가 있다. 목표 기술이 주어졌을 때, 개발해야 하는 기술의 최소 개수와 그 개발 순서를 구한다.
첫 줄에 테스트 케이스 개수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어지고, 각 테스트 케이스는 다음과 같다.
기술 이름은 영문자와 숫자로만 이루어지며 대소문자를 구분한다.
각 테스트 케이스마다 먼저 Case #C: D 형식의 줄을 출력한다. 여기서 C는 1부터 시작하는 테스트 케이스 번호이고, D는 개발해야 하는 기술의 최소 개수다. 이어지는 D개 줄에 개발해야 하는 기술을 개발 순서대로 한 줄에 하나씩 출력한다.
조건을 만족하는 순서가 여러 개면 사전순으로 가장 앞서는 순서 하나만 출력한다. 순서 두 개를 비교할 때는 기술 이름이 처음으로 달라지는 자리를 찾아 그 자리의 이름을 비교하고, 이름은 유니코드 코드 포인트 순서로 비교한다. 따라서 숫자가 대문자보다 앞서고, 대문자가 소문자보다 앞선다.