Rafaela

Time limit: 0.35s Memory limit: 64MB Input: rafaela.in Output: rafaela.out

Prinţesa cu ochii verzi din regatul arborilor, Rafaela, trebuie să recupereze taxele de la toţi cetăţenii regatului. Astfel, formal, se dă un arbore cu N noduri, în fiecare nod aflându-se iniţial un număr dat de cetăţeni. Rafaela ar dori să plaseze capitala regatului într-unul dintre noduri, însă datorită fluctuaţiei numărului de cetăţeni din regat, a întâmpinat o problemă pe care ar dori să o rezolve pe calculator. Astfel, ea va efectua anumite operaţii asupra arborelui pentru a lua, în final, o decizie. Operaţiile sunt de tipul update/query şi sunt descrise mai jos:

  • U nr id – caracterul UU urmat de două numere întregi, care reprezintă o operaţie de update şi are semnificaţia: în nodul cu indicele idid apare un numar de nrnr cetăţeni (în caz că numărul este pozitiv), sau dispare un număr de nrnr cetăţeni (în cazul în care numărul este negativ);
  • Q id – caracterul QQ urmat de un număr întreg, reprezentând o operaţie de tip query la care voi trebuie sărăspundeţi: dacă am stabili capitala regatului în nodul cu indicele idid, atunci care ar fi muchia cea mai des utilizată (pe care se plimbă cei mai mulţi cetăţeni) dacă toţi cetăţenii ar decide să meargă din nodurile în care se află spre capitală? Cum pot exista mai multe astfel de muchii, Rafaela se mulţumeşte doar să aflaţi numărul de cetăţeni care merg pe una dintre muchiile cele mai utilizate.

Cerinţă

Dându-se un arbore cu NN noduri, numărul iniţial de cetăţeni din fiecare nod şi QQ operaţii de tipul update/query, trebuie să răspundeţi la operaţiile de tip query.

Date de intrare

Fişierul de intrare rafaela.in conţine pe prima linie două numere naturale NN si QQ, separate printr-un spaţiu, reprezentând numărul de noduri ale arborelui, respectiv numărul de operaţii efectuate. Pe următoarele N1N-1 linii se află perechi de câte două numere naturale aa şi bb, separate printr-un spaţiu, reprezentând o muchie
(aa și bb reprezintă două noduri din arbore). Pe următoarea linie se află NN numere naturale separate prin câte un spaţiu, numărul de pe poziţia ii reprezentând numărul de cetăţeni care se află iniţial în nodul ii. Pe următoarele QQ linii se află operaţii de tip update/query, o operaţie de update fiind codificată prin caracterul UU, iar o operaţie de tip query prin caracterul QQ. În cazul în care este o operaţie de tip update, pe aceeaşi linie urmează încă două numere intregi nrnr şi idid, separate printr-un spaţiu, unde nrnr reprezintă numărul de cetăţeni care apar/dispar în nodul idid. În cazul în care este o operaţie de tip query, pe aceeaşi linie urmează un număr natural idid, care reprezintă nodul care va deveni capitală şi pentru care vi se cere să aflaţi răspunsul.

Date de ieșire

Fişierul de ieşire rafaela.out va conţine pe fiecare linie câte un număr întreg, reprezentând răspunsurile (în ordine) pentru fiecare operaţie de tip query din fişierul de intrare.

Restricții și precizări

  • 1N200 0001 ≤ N ≤ 200 \ 000
  • 1Q200 0001 ≤ Q ≤ 200 \ 000
  • Se garantează că numărul total de cetăţeni, după fiecare operaţie update, se încadrează pe 3232 de biţi cu semn.
  • Se garantează că numărul de cetăţeni dintr-un nod, după fiecare operaţie de update este un număr pozitiv (mai mare sau egal cu 00).

Exemplu

rafaela.in

5 5
1 2
2 3
2 4
4 5
1 2 3 2 3
Q 2
U 10 3
Q 2
U -5 3
Q 1

rafaela.out

5 
13
15

Explicație

Pentru primul query răspunsul este 55, muchia cea mai intens utilizată fiind cea dintre nodurile 22 şi 44 (se deplasează către capitala 22 toţi cetăţenii din nodurile 44 si 55).

Pentru al doilea query, răspunsul este 1313, muchia cea mai utilizată fiind cea care uneşte nodul 22 de nodul 33 (nodul 33 conţine 1313 cetăţeni, în urma operaţiei update).

Pentru al treilea query, răspunsul este 1515, muchia cea mai folosită fiind cea dintre nodul 11 şi nodul 22.

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