MAX 원소
시간 제한3초메모리 제한1024 MB
잎 노드에 값이 적힌 이진 트리에서 루트 값이 각 질의 M 이상이 되도록 하는 MAX 노드의 최소 개수를 구합니다. 불가능하면 -1을 출력합니다.
문제
Juku에게 정점이 개인 이진 트리가 있다. 이 트리는 균형 잡혀 있지 않을 수도 있다. 정점은 부터 까지 번호가 매겨져 있고, 루트는 정점 이다. 트리의 각 잎에는 수가 하나씩 적혀 있다. Juku는 나머지 정점마다 MIN 원소 또는 MAX 원소를 고를 수 있다. MIN 원소는 자식들의 값 중 작은 값을 자신의 값으로 쓰고, MAX 원소는 큰 값을 쓴다.
Juku는 서로 다른 수마다, 루트의 값이 그 수와 같거나 그보다 크게 되도록 하려면 MAX 원소가 최소 몇 개 필요한지 알고 싶어 한다. Juku의 질문에 답하는 프로그램을 작성하라.
입력
첫 줄에 정점의 수 이 주어진다 (). 이어지는 개의 줄에는 각각 두 정수 , (, )가 주어지며, 이는 정점 와 사이에 간선이 있다는 뜻이다.
그다음 각 줄에는 두 정수 , (, )가 주어진다. 는 잎 정점의 번호이고, 는 그 잎에 적힌 값이다. 이러한 줄은 트리의 잎 개수만큼 있다.
다음 줄에는 질문의 개수 ()가 주어진다. 이어지는 개의 줄에는 각각 정수 ()가 하나씩 주어진다.
출력
Juku의 각 질문마다 한 줄에 답을 출력한다. 루트의 값을 이상으로 만들 수 있다면, 그에 필요한 MAX 원소의 최소 개수를 출력한다. 그렇게 큰 값을 루트에 쓸 수 없다면 을 출력한다. 답은 질문이 주어진 순서대로 출력한다.