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 urmat de două numere întregi, care reprezintă o operaţie de update şi are semnificaţia: în nodul cu indicele apare un numar de cetăţeni (în caz că numărul este pozitiv), sau dispare un număr de cetăţeni (în cazul în care numărul este negativ);Q id
– caracterul 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 , 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 noduri, numărul iniţial de cetăţeni din fiecare nod şi 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 si , separate printr-un spaţiu, reprezentând numărul de noduri ale arborelui, respectiv numărul de operaţii efectuate. Pe următoarele linii se află perechi de câte două numere naturale şi , separate printr-un spaţiu, reprezentând o muchie
( și reprezintă două noduri din arbore). Pe următoarea linie se află numere naturale separate prin câte un spaţiu, numărul de pe poziţia reprezentând numărul de cetăţeni care se află iniţial în nodul . Pe următoarele linii se află operaţii de tip update/query, o operaţie de update fiind codificată prin caracterul , iar o operaţie de tip query prin caracterul . În cazul în care este o operaţie de tip update, pe aceeaşi linie urmează încă două numere intregi şi , separate printr-un spaţiu, unde reprezintă numărul de cetăţeni care apar/dispar în nodul . În cazul în care este o operaţie de tip query, pe aceeaşi linie urmează un număr natural , 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
- Se garantează că numărul total de cetăţeni, după fiecare operaţie update, se încadrează pe 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 ).
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 , muchia cea mai intens utilizată fiind cea dintre nodurile şi (se deplasează către capitala toţi cetăţenii din nodurile si ).
Pentru al doilea query, răspunsul este , muchia cea mai utilizată fiind cea care uneşte nodul de nodul (nodul conţine cetăţeni, în urma operaţiei update).
Pentru al treilea query, răspunsul este , muchia cea mai folosită fiind cea dintre nodul şi nodul .