당신은 두더지 군단의 지휘관이다. 인간들이 당신들의 영토에서 철인삼종경기를 개최한다는 정보를 입수했다. 당신은 이번 대회에 참가하는 선수들을 한 명도 빠짐없이 붙잡아 땅속으로 끌고 오기로 했다.
두더지가 철인삼종경기 선수쯤은 손쉽게 붙잡아 땅속으로 끌고 갈 수 있다는 사실은 잘 알려져 있다. 문제는 선수의 위치를 알아내는 것이다.
경기장은 부터 까지 번호가 붙은 지점 개와 이들을 연결하는 길 개로 이루어진 트리이다. 모든 길의 길이는 이다. 두 지점 , 사이의 거리 는 두 지점을 잇는 유일한 경로의 길이이다.
당신은 대회가 시작되기 전에 경기장의 각 지점에 두더지를 최대 한 마리씩 배치하려고 한다. 배치된 두더지는 땅속에 매복하여 선수를 기다린다.
선수는 경기장의 지점 중 하나에 있다고 하자. 두더지는 선수의 발소리를 듣고 자신이 있는 지점부터 선수가 있는 지점까지의 거리를 정확히 알아낼 수 있다. 하지만 소리가 나는 방향은 구별하지 못한다. 따라서 그 거리에 해당하는 지점이 정확히 하나일 때만 선수의 위치를 알아내고 잡으러 갈 수 있다.
땅속에서는 무전기가 작동하지 않아 두더지들이 서로 연락할 수 없다. 각 두더지는 다른 두더지의 측정 결과를 이용하지 않고, 자신이 알아낸 거리만으로 선수의 위치를 판단해야 한다.
즉, 지점 에 배치된 두더지가 지점 의 선수를 찾아낼 수 있으려면, 가 아닌 모든 지점 에 대해 다음 조건을 만족해야 한다.
선수가 어느 지점에 있더라도 적어도 한 마리의 두더지는 그 위치를 유일하게 알아낼 수 있어야 한다. 선수의 위치에 따라 찾아내는 두더지는 달라도 되며, 선수와 두더지가 같은 지점에 있어도 된다. 같은 지점에 있으면 거리는 이다.
군단의 병력을 아끼기 위해, 당신은 이 조건을 만족하는 최소 수의 두더지만 동원하려고 한다. 필요한 두더지의 수와 두더지를 배치할 지점들을 구하여라. 가능한 최소 배치가 여러 개라면 아무거나 하나를 구해도 된다.
첫째 줄에 테스트 케이스의 개수 가 주어진다. 입력의 전체 형식은 다음과 같다.
각 테스트 케이스마다 두 줄에 걸쳐 출력한다.
첫째 줄에 모든 지점의 선수를 찾아낼 수 있도록 배치하는 데 필요한 두더지의 최소 수 를 출력한다.
둘째 줄에 두더지를 배치할 서로 다른 지점의 번호 개를 공백으로 구분하여 출력한다. 각 지점에는 두더지를 한 마리씩 배치한다.
지점 번호의 출력 순서는 상관없다. 가능한 최소 배치가 여러 개이면 그중 아무거나 하나를 출력한다.
첫 번째 테스트 케이스에서는 지점 , , , , 에 두더지를 한 마리씩 배치한다.
선수가 이 다섯 지점 중 하나에 있으면, 같은 지점에 있는 두더지가 거리 을 듣고 위치를 알아낸다. 선수가 지점 에 있으면 지점 의 두더지가 찾아낼 수 있다. 지점 에서 거리가 인 지점은 뿐이기 때문이다. 마찬가지로 지점 의 선수는 지점 의 두더지가 거리 로 찾아낸다. 따라서 모든 위치를 찾아낼 수 있으며, 필요한 두더지의 최소 수는 이다.
각 테스트 케이스는 다음 형식으로 주어진다.
첫째 줄에 경기장의 지점 수 이 주어진다. 다음 개의 줄에는 길로 직접 연결된 두 지점의 번호 , 가 주어진다.
주어진 길들은 개의 지점을 연결하는 트리를 이룬다. 이면 길을 나타내는 줄은 없다.
차수가 인 정점이 없다.
| 4 | 37 | 추가적인 제약이 없다. |
두 번째 테스트 케이스에서는 지점 에 두더지 한 마리만 배치하면 된다. 이 두더지가 듣는 거리는 선수가 지점 , , , 에 있을 때 각각 , , , 으로 모두 다르다.
세 번째 테스트 케이스에서는 유일한 지점 에 두더지 한 마리를 배치한다.
첫 번째 테스트 케이스에서는 지점 , , 에 두더지를 배치한다. 이 세 지점의 선수는 같은 지점에 있는 두더지가 찾아낸다.
지점 의 두더지는 지점 의 선수를 거리 로, 지점 의 선수를 거리 으로 찾아낼 수 있다. 지점 에서 각각의 거리에 있는 지점이 하나뿐이기 때문이다. 따라서 세 마리로 모든 위치를 찾아낼 수 있다. 지점 , , 에 배치하는 것도 올바른 최소 배치이다.
두 번째 테스트 케이스에서 지점 와 에만 두더지를 배치했다고 하자. 선수가 지점 에 있으면 두 두더지가 듣는 거리는 모두 이다. 하지만 지점 의 두더지는 선수가 지점 에 있는지 에 있는지 구별하지 못한다. 지점 의 두더지도 지점 와 를 구별하지 못한다. 두더지들은 서로 연락할 수 없으므로 이 배치는 조건을 만족하지 않는다.
지점 , , 에 모두 배치하면 이 세 지점은 거리 으로 찾아낼 수 있다. 지점 의 선수도 지점 의 두더지가 거리 로 찾아낼 수 있다.