확장 노선 건설 순서
시간 제한1초메모리 제한128 MB
역 1로 시작하는 네트워크와 각 노선의 역 집합이 주어질 때, 건설 시점에 네트워크와 맞닿도록 모든 노선을 짓는 사전순 최소 순서를 출력하거나 Impossible을 출력한다.
문제
노선을 추가할 집합을 정한 뒤에는, 이 확장 노선들을 어떤 순서로 건설할지가 중요한 문제가 됩니다. 새 노선은 건설되는 시점에 이미 기존 네트워크와 맞닿아 있어야만 쓸모가 있습니다. 예를 들어 아직 나머지 네트워크와 연결되지 않은 역까지 노선을 연장하는 것은 의미가 없습니다.
현재 네트워크는 하나의 시작점(역 , 기존 네트워크 전체를 대표함)으로 주어지며, 여기에 제안된 모든 확장 노선이 함께 주어집니다. 각 확장 노선은 그 노선이 연결하게 될 역들의 집합으로 표현됩니다. 어떤 노선은 그 역들 중 적어도 하나가 이미 네트워크에 속해 있을 때에만 건설할 수 있으며, 일단 건설되면 그 노선의 모든 역이 네트워크의 일부가 됩니다.
모든 노선이 건설되는 시점에 네트워크와 연결되도록 하는 건설 순서를 구하거나, 그러한 순서가 존재하지 않음을 판별하세요.
입력
첫 줄에는 데이터 집합의 개수 가 주어집니다. 각 데이터 집합은 다음과 같은 형식입니다.
- 첫 줄에 두 정수 과 이 주어집니다 (, ). 은 전체 역의 수이며, 역 은 현재 네트워크 전체를 나타냅니다. 은 제안된 새 노선의 수입니다.
- 이어서 개의 줄이 주어지며, 각 줄은 하나의 노선을 설명합니다. 번째 줄에는 노선 가 연결하는 역들의 집합 에 속한 역 번호들이 공백으로 구분되어 주어집니다.
출력
각 데이터 집합에 대해, 먼저 Data Set x: 형식의 한 줄을 출력합니다. 여기서 는 그 데이터 집합의 번호이며 부터 시작합니다.
그다음 노선을 건설해야 하는 순서대로, 한 줄에 노선 번호 하나씩 출력합니다(노선은 입력에 나타난 순서대로 부터 까지 번호가 매겨집니다). 각 노선은 건설되는 시점에 네트워크와 연결되어 있어야 합니다.
가능한 순서가 여러 개라면 사전순으로 가장 앞서는 것을 출력합니다. 두 순서를 서로 다른 첫 위치에서 비교하여, 그 위치의 노선 번호가 더 작은 순서를 앞에 둡니다.
가능한 순서가 존재하지 않으면 순서 대신 Impossible을 출력합니다.
서로 이웃한 데이터 집합 사이는 빈 줄로 구분합니다.