“Una e să te spargi în figuri, și alta e să spargi figuri”
Lui Nea Puiu îi place foarte mult să spargă figuri. În cazul de față, figurile pe care vrea să le spargă sunt arbori cu $N$ noduri care au rădăcina fixată (un arbore reprezintă un graf neorientat, conex și aciclic). Prin spargerea unui arbore se înțelege tăierea unei muchii a acestuia, fapt ce cauzează ca toate nodurile care nu mai sunt conectate cu rădăcina arborelui să se desprindă de acesta.
Înainte de a da lovitura, Nea Puiu a studiat cu atenție proprietățile arborilor și a definit adâncimea unui subarbore ca fiind cea mai mare distanță dintre rădăcina subarborelui și o frunză a acestuia.
Fiindcă Nea Puiu nu dorește să lase multe dovezi după acțiunile sale, el dorește să răspundă la întrebări de forma: ”În câte moduri poate tăia o muchie din subarborele cu rădăcina în nodul $x$ astfel încât după taiere, noua adâncime a subarborelui să fie aceeași cu adâncimea de dinainte?”.
Totuși, Nea Puiu este un profesionist, așa că se întreabă ce s-ar întampla dacă arborele s-ar modifica între diverse întrebări. Așadar, pot exista două evenimente de modificare a arborelui: fie se șterge o anumită frunză a acestuia, fie se adaugă un nod nou, legat de unul dintre nodurile deja existente în arbore.
Deoarece Nea Puiu este nevoit să se ocupe de contribuțiile la gaze, voi trebuie, dându-se arborele inițial și $M$ operații de forma celor descrise mai sus, să răspundeți la întrebările acestuia!
Fișierul de intrare neapuiu.in conține două numere naturale: $N$, numărul de noduri din arbore și $M$, numărul de operații ce se vor efectua.
Următoarele $N – 1$ linii descriu muchiile arborelui. Fiecare linie conține două numere naturale, $x$ și $y$, separate printr-un spațiu, reprezentând faptul ca există o muchie de la $x$ la $y$ în arbore.
Următoarele $M$ linii descriu operațiile efectuate. Fiecare linie este formată din numere naturale și poate avea unul dintre următoarele formate:
Fișierul de ieșire neapuiu.out va trebui să conțina răspunsurile la întrebările din fișierul de intrare, câte unul pe linie.
neapuiu.in
9 14 1 2 1 6 2 3 2 4 4 5 6 7 6 8 6 9 2 1 2 2 0 3 10 2 2 2 6 1 8 2 6 0 9 11 0 11 12 2 6 0 7 13 1 12 2 6 2 5
neapuiu.out
5 1 4 3 2 1 4 0
| Autor: | Andrei Ciocan Andrei Pârvu Vlad Ionescu |
| Publicat de: | raresgherasa |
Tags:
Arbori de intervale LCA