P7242 [COCI 2019/2020 #4] Klasika

题目描述

开始时,你有一个编号为 $1$ 的节点,它代表着一棵树的根。你的任务是对树进行 $Q$ 次操作。 操作分为两类: - $\texttt{Add x y}$,给树上编号为 $x$ 的节点加入一个儿子,该儿子的编号为加入该节点后树的大小,它与 $x$ 的边的边权为 $y$。 - $\texttt{Query a b}$,查找从 $a$ 出发,到 $b$ 节点子树内某个节点(包括 $B$ )的路径中边权异或和最大的一条,并输出其异或和。

输入格式

第一行一个整数 $Q$。 加下来 $Q$ 行,每行一个字符串和两个数字,描述一次操作。

输出格式

对于每个 $\texttt{Query}$ 操作,一行一个整数表示答案。

说明/提示

【数据规模与约定】 | 子任务编号 | 特殊限制 | 分值 | | ---------- | ------------------------------------------ | ---- | | $1$ | $Q\le 200$ | $10$ | | $2$ | $Q\le 2\times 10^3$ | $20$ | | $3$ | 对于所有 $\texttt{Query}$ 操作,保证 $b=1$ | $30$ | | $4$ | 无特殊限制 | $40$ | 对于 $100\%$ 的数据,$1\le Q\le 2\times 10^5$,$0\le y\le 2^{30}$,保证 $x,a,b$ 小于等于当前树的大小。 【提示与帮助】 **题目译自 [COCI 2019/2020](https://hsin.hr/coci/archive/2019_2020/) [CONTEST #4](https://hsin.hr/coci/archive/2019_2020/contest4_tasks.pdf) T4 Klasika** 在 COCI 中,本题分值为 $110$ 分。