Fişierul intrare/ieşire: | citylog.in, citylog.out | Sursă | Algoritmiada 2013, Runda 2 |
Autor | Adrian Budau | Adăugată de | Mihai Calancea •klamathix |
Timp execuţie pe test | 0.85 sec | Limită de memorie | 12000 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Citylog
Toti copiii viseaza la un moment dat la o cariera ideala din punctul lor de vedere. Nu-i asa ca tu ti-ai dorit dintotdeauna sa lucrezi la arhiva Primariei? Probabil 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.in | citylog.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 |