Masala #R107F
O’suvchi daraxt
Siz o‘sib boruvchi daraxt bilan ishlayapsiz.
Dastlab daraxtda faqatgina 1-tugun (vertex) mavjud bo‘lib, u ildiz (root) hisoblanadi.
Har bir tugunda uning qiymati yozilgan.
Sizga ketma-ket so‘rovlar beriladi. Ularni berilgan tartibda bajarib borish kerak.
Ba’zi so‘rovlar daraxtni kengaytiradi, ba’zilari esa daraxtning ma’lum bir qismi ustida savol beradi.
Kirish faylining birinchi qatorida ikkita butun son \( Q, S \) — so‘rovlar soni va birinchi tugunning qiymati kiritiladi.
Keyingi \( Q \) ta qatorning har birida quyidagi so‘rovlarning biri kiritiladi:
- \( 1\ p\ x \) — qiymati \( x \) bo‘lgan yangi tugun \( p \) tartib raqamli tugunga ulanadi.
Bunda yangi qo‘shilgan tugun tartib raqami \( t + 1 \) deb belgilanadi, bu yerda \( t \) — ayni vaqtdagi daraxtdagi tugunlar soni. - \( 2\ v \) — tartib raqami \( v \) bo‘lgan tugunning qism daraxtidan (subtree)
bo‘sh bo‘lmagan shunday tugunlar to‘plamini tanlangki, ushbu tugunlardagi qiymatlarning
umumiy XOR qiymati minimal bo‘lsin, boshqacha aytganda:
\( k = val_{p_1} \oplus val_{p_2} \oplus \dots \oplus val_{p_l}, \; p_i \in S \)
Bu yerda:
\( S \) — \( v \) tugunining qism daraxtidagi tanlangan tugunlar to‘plami,
\( val_i \) — \( i \)-tugunning qiymatini bildiradi.
Cheklovlar:
\( 1 \le Q \le 2 \times 10^5 \)
\( 0 \le S, x \le 10^9 \)
Barcha so‘rovlarda \( p \) va \( v \) tugunlari mavjudligi va to‘g‘riligiga kafolatlanadi.
Har bir ikkinchi turdagi so‘rov uchun minimal XOR qiymatini toping.
| # | input.txt | output.txt |
|---|---|---|
| 1 |
10 7 1 1 5 2 1 1 2 6 2 1 1 3 14 1 1 5 2 3 1 5 0 1 5 7 2 5 |
2 1 6 0 |