luogu#P6086. 【模板】Prufer 序列

【模板】Prufer 序列

题目描述

请实现 Prüfer 序列和无根树的相互转化。

为方便你实现代码,尽管是无根树,我们在读入时仍将 nn 设为其根。

对于一棵无根树,设 f1n1f_{1\dots n-1} 为其父亲序列fif_i 表示 iinn 为根时的父亲),设 p1n2p_{1 \dots n-2} 为其 Prüfer 序列

另外,对于一个长度为 mm 的序列 a1ma_{1 \dots m},我们设其权值xori=1mi×ai\operatorname{xor}_{i = 1}^m i \times a_i

输入格式

第一行两个整数 n,mn,m,表示树的点数和转化类型。

m=1m = 1,第二行一行 n1n-1 个整数,表示父亲序列。
m=2m = 2,第二行一行 n2n-2 个整数,表示 Prufer 序列。

输出格式

m=1m = 1,一行一个整数,表示给出的父亲序列对应的 Prüfer 序列的权值。
m=2m = 2,一行一个整数,表示给出的 Prüfer 序列对应的父亲序列的权值。

6 1
3 6 4 6 1
29
6 2
4 6 5 2
4

提示

【样例 1 解释】

p={6 1 3 4}p = \{6\ 1\ 3\ 4\}

【样例 2 解释】

f={4 6 6 5 2}f = \{4\ 6\ 6\ 5\ 2\}


【数据范围】

测试点编号 2n2 \le n \le m=m =
11 10310^3 11
22 10510^5
33
44 5×1065 \times 10^6
55
66 10310^3 22
77 10510^5
88
99 5×1065 \times 10^6
1010