Problem #217

confuzie

Time limit: 0.7s
Memory limit: 64MB
Input: confuzie.in
Output: confuzie.out

“Been […] confused for so long it’s not true”

ZLed a devenit un pic confuz în ultima vreme, aşa că a început să se joace cu arbori (în scop terapeutic). Fiecare nod din arbore poate fi colorat fie cu alb, fie cu negru. Iniţial toate nodurile sunt colorate în alb.

parcursul jocului, ZLed poate alege un nod din arbore căruia să îi schimbe culoarea (din alb în negru sau din negru în alb). De asemenea, el poate selecta două noduri x și y din arbore, cu x strămoș al lui y, și se poate întreba: ”Dintre toate nodurile de pe drumul de la x la y (inclusiv x și y) care este cel mai apropiat nod față de x care este colorat în negru?”.

Cerinţă

Deoarece vreţi să disipaţi starea de confuzie a lui ZLed, trebuie să îl ajutaţi şi să-i rezolvați operaţiile de colorare a unui nod, respectiv de interogare a celui mai apropiat nod de culoare neagră de pe drumul de la x la y, pentru un strămoș x al lui y.

Date de intrare

Fişierul confuzie.in va conţine pe prima linie două numere N şi M, unde N este numărul de noduri din arbore, iar M numărul de operaţii care se efectuează, atât modificări de culoare, cât şi interogări.

Următoarele N-1 linii conţin descrierea arborelui, pe fiecare linie aflându-se două numere a şi b, semnificând faptul că există o muchie între a şi b în arbore.

Pe urmatoarele M linii sunt descrise operaţiile efectuate. Primul număr de pe fiecare din aceste linii reprezintă tipul operaţiei: 0 dacă este vorba de o modificare de culoare, respectiv 1 dacă este vorba de o interogare. În primul caz, după 0 va urma un număr x, semnificând că se va schimba culoarea lui x, din negru în alb sau din alb în negru. În al doilea caz, după 1 vor urma două numere x și y, cu x strămoş al lui y, semnificând că se doreşte aflarea, dintre toate nodurile de pe drumul de la x la y, a celui mai apropiat nod faţă de x care este colorat în negru.

Date de ieșire

Fișierul confuzie.out va conține câte o linie pentru fiecare operație de interogare prezentă în fișierul de intrare. Această linie poate conține fie nodul cerut(cel mai apropiat nod negru de x) de pe drumul dintre cele două noduri date la interogare, fie -1 dacă drumul dintre nodurile date la interogare nu conține niciun nod colorat cu negru.

Restricţii şi precizări:

  • Rădăcina arborelui se consideră nodul cu indice 1.
  • 1 <= N <= 200.000
  • 1 <= M <= 450.000
  • 1 <= x, y, a, b <= N
  • Un arbore este un graf neorientat, conex și aciclic.
  • Un nod x se numește strămoș al lui y dacă el se află pe drumul de la y la rădăcina arborelui.

Exemplu:

confuzie.in

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

confuzie.out

2
-1
1
5
-1
5

Explicaţii

Pe rând operațiile:

Setăm 2 pe negru
Din drumul [1, 2], 2 e negru
Din drumul [1, 1], nu avem nod negru

Setăm 1 pe negru
Din drumul [1, 2], 1 și 2 negre, primul este 1

Setăm 5 pe negru
Din drumul [3, 5], 5 e negru
Din drumul [3, 7] nu avem nod negru

Setăm 1 pe alb
Din drumul [1, 3, 5], 5 e negru

General info

Uploader: liviu

Author: Andrei Pârvu

Source: ONI 2013 XI-XII: Ziua 1 Problema 3

Submissions