Fişierul intrare/ieşire:citylog.in, citylog.outSursăAlgoritmiada 2013, Runda 2
AutorAdrian BudauAdăugată deklamathixMihai Calancea klamathix
Timp execuţie pe test1.7 secLimită de memorie6896 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Citylog

Toti copiii viseaza la un moment dat la o cariera ideala din punctul lor de vedere. Soferi, pompieri, fotbalisti, astronauti, Hanne Montane, nu conteaza. Nu-i asa ca tu ti-ai dorit dintotdeauna sa lucrezi la Primarie? Bineinteles ca nu, dar in scopurile acestei probleme vom presupune acest lucru. Mai exact, functia ta in Primarie este sa mentii arborele genealogic al orasului si sa raspunzi la intrebarile inutile ale cetatenilor. Astfel, actiunile tale intr-o zi se impart in doua clase:

  • 0 Consemneaza faptul ca cetateanul Y are un nou copil, iar numele sau este X.
  • 1 Spune-i cetateanului X care este al Y-lea stramos al sau. Nu stim nici noi de ce nu-si intreaba proprii parinti sau de ce nu-si folosesc timpul intr-un mod mai productiv, dar nu e treaba ta!

Initial, singurul cetatean al orasului este cetateanul 1 si se garanteaza ca toti ceilalti cetateni vor fi stranepotii sai. Fiecare copil va avea un singur parinte, iar numarul total al cetatenilor la finalul zilei va fi N. Numarul total de cereri, indiferent de tipul lor, va fi M. 

Date de intrare

Fişierul de intrare citylog.in va contine pe prima sa linie doua numere, N si M. Urmatoarele M linii vor fi de forma TIP A B, unde TIP denota tipul intrebarii, iar A si B sunt numerele cu care veti obtine cererile, in felul urmator:

X = A xor current
Y = B xor current

Variabila current reprezinta valoarea ultimului raspuns la o cerere de tip 1. Initial, current = 0.

Date de ieşire

În fişierul de ieşire citylog.out se vor afla raspunsurile la cererile de tip 1. Daca cetateanul X nu are un al Y-lea stramos, raspunsul va fi 0.

Restricţii

  • 1 ≤ N ≤ 105
  • 1 ≤ M ≤ 106
  • Din cauza conditiilor meteo indurate de evaluator, Primaria Infoarena va sugereaza sa folositi citirea cu streamuri pentru aceasta problema.

Exemplu

citylog.incitylog.out
5 10
0 2 1
0 3 2
1 1 0
1 2 3
0 5 0
1 5 0
0 4 2
1 4 2
1 4 0
1 6 7
1
1
1
1
3
0
Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?