트리 암호 복원
면접 대비시간 제한1초메모리 제한128 MB
트리와 일부가 지워진 잎 제거 부호가 주어지면 부호화 과정을 재현해 지워진 숫자를 복원합니다.
문제
이고 이라고 하자. 트리 는 연결되어 있으면서 간선이 정확히 개인 그래프다. 아래 그림은 트리 이다.

에서 이고 이다.
민턴 교수는 트리를 암호로 바꾸는 방법을 찾아냈다. 트리의 암호는 의 원소 개를 나열한 수열이고, 다음 세 단계를 번 반복해서 만든다.
- 남아 있는 트리에서 번호가 가장 작은 잎(차수가 인 정점)을 고른다.
- 그 잎에 붙어 있는 유일한 정점의 번호를 수열 뒤에 이어 붙인다.
- 고른 잎을 트리에서 지운다.
번을 반복하면 정점이 두 개 남는다. 의 암호는 이다.
암호는 숫자 몇 개가 지워진 채로 전해지기도 한다. 지워진 자리는 문자 x로 표시한다. 트리와 숫자가 지워진 암호가 주어지면, 지워진 숫자를 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다. ()
각 테스트 케이스는 세 줄이다. 첫째 줄에 정점의 개수 이 주어진다. () 둘째 줄에 트리를 나타내는 개의 수가 공백으로 구분되어 주어진다. 앞에서부터 두 개씩 짝을 지어 첫 번째 짝이 첫 번째 간선, 두 번째 짝이 두 번째 간선을 뜻하고, 나머지도 같은 방식이다. 셋째 줄에 숫자가 지워진 암호가 토큰 개로 주어진다. 각 토큰은 정점 번호이거나, 지워진 자리를 뜻하는 x다. 이면 셋째 줄은 비어 있다.
지워지지 않은 숫자는 주어진 트리의 암호와 일치한다. 모든 테스트 케이스의 을 더한 값은 을 넘지 않는다.
출력
테스트 케이스마다 한 줄에, 지워진 숫자를 입력에 나온 순서대로 공백 하나로 구분해 출력한다. 지워진 숫자가 하나도 없으면 빈 줄을 출력한다.