树的基础练习题
题目描述
给定一颗 n 个节点的有根树,节点编号为 1∼n,其中 1 号点是根节点。树上每个点有初始权值 a1,…,an。
接下来有 m 次操作,每次操作给出三个参数 opi,xi,vi:
- opi=1 时,表示将 xi 及以 xi 为根的子树内的节点权值全部异或上 vi;
- opi=2 时,表示将从 xi 到根节点的简单路径上的所有节点(包括路径端点)的权值全部异或上 vi。
这 m 次操作结束后,请你依次输出树上每个节点的最终权值 a1′,…,an′。
输入格式
第一行两个正整数 n,m,意义如题目描述。
接下来一行 n−1 个以空格分隔的正整数 p2,p3,…,pn,依次描述 2∼n 号节点的父亲节点编号。
接下来一行 n 个以空格分隔的非负整数 a1,…,an。
接下来 m 行,每行三个以空格分隔的整数 opi,xi,vi,描述一次操作。
输出格式
一行 n 个以空格分隔的非负整数 a1′,…,an′,表示所有操作完成之后树上每个节点的最终权值。
样例输入
文本
6 5
4 1 1 6 3
12 3 20 12 11 9
1 2 14
2 2 16
2 3 20
1 3 16
1 4 18
样例输出
数据范围
本题共包含 10 个测试点。对于全部测试数据,3≤n,m≤105,0≤ai,vj≤109,opj∈{1,2},1≤xj≤n,∀1≤i≤n,1≤j≤m,1≤p2,p3,…,pn≤n,保证构成一颗树。
| 测试点编号 |
n,m≤ |
特殊性质 |
| 1∼3 |
1000 |
- |
| 4∼5 |
105 |
pi=i−1,∀2≤i≤n |
| 6∼7 |
105 |
opi=1,∀1≤i≤m |
| 8∼10 |
105 |
- |