Description
Prüfer 序列又写作 Prufer 序列。
请实现 Prüfer 序列和无根树的相互转化。
为方便你实现代码,尽管是无根树,我们在读入时仍将 n 设为其根。
对于一棵无根树,设 f1…n−1 为其父亲序列(fi 表示 i 在 n 为根时的父亲),设 p1…n−2 为其 Prüfer 序列。
另外,对于一个长度为 m 的序列 a1…m,我们设其权值为 xor(i=1 to m) i×ai。
Input
第一行两个整数 n,m,表示树的点数和转化类型。
若 m=1,第二行一行 n−1 个整数,表示父亲序列。
若 m=2,第二行一行 n−2 个整数,表示 Prüfer 序列。
Output
若 m=1,一行一个整数,表示给出的父亲序列对应的 Prüfer 序列的权值。
若 m=2,一行一个整数,表示给出的 Prüfer 序列对应的父亲序列的权值。
HINT
样例二:
输入:
6 2
4 6 5 2
输出:
4
【样例 1 解释】
p={6 1 3 4}。
【样例 2 解释】
f={4 6 6 5 2}。
【数据范围】
|
测试点编号
|
2≤n≤
|
m=
|
|
1
|
103
|
1
|
|
2
|
105
|
1
|
|
3
|
105
|
1
|
|
4
|
5×106
|
1
|
|
5
|
5×106
|
1
|
|
6
|
103
|
2
|
|
7
|
105
|
2
|
|
8
|
105
|
2
|
|
9
|
5×106
|
2
|
|
10
|
5×106
|
2
|