MAX-elemendid

시간 제한3초메모리 제한1024 MB

요약
잎에 값이 적힌 루트 트리의 내부 노드에 MIN 또는 MAX를 배정할 때, 주어진 값 이상이 루트에 나오도록 하는 MAX 노드 수의 최솟값을 각 질의마다 구한다.
난이도

어려움10점 중 8점

유형
트리, 그리디, 정렬, DFS
정답자
아직 제출이 없습니다

문제

Jukul on NN tipuga kahendpuu, mis ei pruugi olla tasakaalus. Puu tipud on nummerdatud 1…N1 \ldots N ja puu juur on tipp number 11. Puu igasse lehte on kirjutatud üks arv. Juku saab igasse ülejäänud tippu paigutada omal valikul kas MIN- või MAX-elemendi. MIN-element kirjutab oma tipu väärtuseks selle alluvate väärtustest väiksema, MAX-element suurema. Juku tahab erinevate arvude kohta teada, mitu MAX-elementi on minimaalselt vaja selleks, et juurtipu väärtuseks kirjutataks antud arvuga võrdne või sellest suurem arv. Kirjuta programm, mis aitab Juku küsimustele vastata.

입력

Sisendi esimesel real on puu tippude arv NN (3≤N≤1053 \le N \le 10^5). Järgmisel N−1N-1 real on igaühel kaks täisarvu A_iA\_i ja B_iB\_i (1≤A_i,B_i≤N1 \le A\_i, B\_i \le N, A_i≠B_iA\_i \ne B\_i), mis tähendab et tippude A_iA\_i ja B_iB\_i vahel on serv.

Järgnevatel ridadel on igaühel kaks täisarvu X_jX\_j ja Y_jY\_j (1≤X_j≤N1 \le X\_j \le N, 0≤Y_j≤1070 \le Y\_j \le 10^7), kus X_jX\_j on ühe lehttipu indeks ja Y_jY\_j sinna kirjutatud väärtus. Selliseid ridu on samapalju kui puus lehti.

Järgmisel real on Juku küsimuste arv QQ (1≤Q≤5⋅1051 \le Q \le 5 \cdot 10^5). Järgmisel QQ real on igaühel üks täisarv M_kM\_k (0≤M_k≤1070 \le M\_k \le 10^7), mille kohta Juku tahab teada minimaalset vajalikku MAX-elementide arvu.

출력

Juku iga küsimuse kohta väljastada üks rida. Kui Juku antud M_kM\_k või sellest suurema arvu saamine puu juurtippu on võimalik, väljastada minimaalne selleks vajalike MAX-elementide arv. Kui nii suurt arvu pole võimalik juurtippu saada, siis väljastada vastuseks −1-1. Vastused väljastada küsimuste sisendis olemise järjekorras.

예제1

  1. 예제 1

    입력
    5
    1 2
    2 3
    5 1
    4 2
    3 7
    4 5
    5 12
    3
    10
    4
    23
    
    예상 출력
    1
    0
    -1