arb

Time limit: 0.6s Memory limit: 64MB Input: arb.in Output: arb.out

Se dă un arbore cu NN noduri numerotate de la 11 la NN, rădăcina fiind nodul cu numărul 11.
Fiecare nod i(1iN)i (1 \leq i \leq N) are asociată o valoare CiC_i.
Trebuie să răspundem la întrebări de tipul: „Care este suma valorilor asociate nodurilor din subarborele cu rădăcina în nodul ii aflate la distanţă cel mult egală cu jj faţă de nodul ii?”.
Distanţa de la un nod xx la un nod yy este egală cu numărul de muchii de pe drumul de la xx la yy.

Cerinţă

Să se scrie un program care să răspundă la MM întrebări de tipul specificat.

Date de intrare

Fişierul de intrare arb.in conţine pe prima linie numărul natural NN. Pe a doua linie se află NN numere reprezentând costurile asociate celor NN noduri. Pe cea de a treia linie se află N1N-1 numere, cel de-al ii-lea număr reprezentând părintele nodului cu numărul i+1i+1. Pe a patra linie se află numărul natural MM. Pe următoarele MM linii se află câte două numere naturale i ji \ j reprezentând o întrebare de tipul specificat în enunţ (ii este rădăcina subarborelui, iar jj este distanţa maximă). Valorile aflate pe aceeaşi linie sunt separate prin câte un spaţiu.

Date de ieșire

Fişierul de ieşire arb.out va conţine MM linii. Linia ii conţine un singur număr natural reprezentând răspunsul la cea de a ii-a întrebare din fişierul de intrare.

Restricții și precizări

  • 1N250 0001 \leq N \leq 250 \ 000
  • 1M500 0001 \leq M \leq 500 \ 000
  • 0Ci5 0000 \leq C_i \leq 5 \ 000, 1iN1 \leq i \leq N

Exemplu

arb.in

7
1 2 2 1 3 4 5
1 1 1 3 3 6
3
3 1
3 2
1 0

arb.out

9
14
1

Log in or sign up to be able to send submissions!