题目描述
给定 n 个点,点编号为 1 ~ n。
你需要判断,是否存在一棵以这 n 个点为顶点的树,以及一个根节点 r,满足以下条件:
- 第 i 个点的点权为 a[i],其中 a[i] in {0,1};
- 对于每个点 i,记从根节点 r 到点 i 的简单路径上所有点权的异或和为 b[i],且给定的 b[i] 与该路径异或和完全一致。
这里,异或运算记作 XOR。对于两个 0/1 数 x, y:
- 当 x = y 时,x XOR y = 0;
- 当 x != y 时,x XOR y = 1。
一条路径上若经过的点权依次为 c[1], c[2], ..., c[k],则这条路径的异或和定义为
c[1] XOR c[2] XOR ... XOR c[k]
注意,路径包含起点和终点,因此根节点自身对应的路径异或和也需要计入。
你只需要判断是否存在这样的树和根节点 r,无需构造方案。
第一行一个整数 n,表示点的个数。
第二行 n 个整数 a1,a2,…,an,其中每个数均为 0 或 1,表示每个点的点权。
第三行 n 个整数 b1,b2,…,bn,其中每个数均为 0 或 1,表示从某个未知根节点到各点路径上的异或和。
如果存在满足条件的树与根节点,输出 Yes;否则输出 No。