黑白树游戏

测试数据来自 system/1465

时间限制:1秒  内存限制:256M


【问题描述】

  黑白树游戏是这样的:
  给定一棵 \(n\) 个节点的树(编号 \(1~n\) ),\(1\) 号点为根节点,设 \(v\) 的父亲是 \(f(v)\) 。其中每个节点有一个颜色,要么是黑色,要么是白色。不妨记第 \(i\) 个节点的初始颜色是 \(c_i\),\(c_i=0\) 或 \(c_i=1\),表示黑色或白色。
  在游戏开始时,为每个节点选择一个目标颜色 \(d_i\),要求你经过若干次操作,将每个节点变成其目标颜色。你的操作是这样的:
  选定一个点 \(u\),将 \(u,f(u),f(f(u)),…,f_{k-1}(u)\) 这 \(k\) 个节点的颜色翻转(将白色节点变为黑色节点,将黑色节点变为白色节点)。其中 \(k\) 是游戏开始前确定的一个正整数。只有 \(u,f(u),f(f(u)),…,f_{k-1}(u)\) 这 \(k\) 个节点均存在,你才能执行这样的操作。当然,你可以执行任意多次操作。
  现在小H要和你玩 \(T\) 次这样的游戏,每次你都想要知道你是否有可能完成要求,即通过若干次操作,将所有节点变成其目标颜色。

【输入格式】

  输入文件的第一行仅一个数 \(T\),表示这样的游戏的次数;
  接下来共有T组数据。对于每一组数据:
  第一行是两个正整数 \(n,k\),\(n\) 表示树的大小,\(k\) 的含义请参见【题目描述】。
  接下来 \(n-1\) 行每行两个数 \(u,v\),表示树上有一条边 \((u,v)\)。注意:输入并不保证边的方向。
  接下来一行 \(n\) 个数 \(c_1,c_2,…,c_n\),表示初始颜色。
  接下来一行 \(n\) 个数 \(d_1,d_2,…,d_n\),表示目标颜色。

【输出格式】

  输出包含 \(T\) 行,第 \(i\) 行对应第 \(i\) 次游戏的答案,对于第 \(i\) 次游戏,如果你有可能完成任务,输出Yes,否则输出No。

【输入输出样例1】

 Input

2
3 2
1 2
2 3 
0 0 0
1 0 1
3 2
1 2
2 3
0 0 0
1 1 1

 Output

Yes 
No

【输入输出样例1说明】

  在第一个例子中,第一次选择2号点操作,1,2号点被翻转;第二次选择3号点操作,2,3号点被翻转。即达成目标状态。
  可以证明,无法将初始状态经过操作变为目标状态。

【数据说明】

  对于全部测试点:\(T ≤ 10 , k ≤ n ≤ 2×10^5\),保证数据给出的是一棵树。
  对于 \(10\%\) 的数据,\(n ≤ 5\)
  对于 \(30\%\) 的数据,\(n ≤ 20\)
  对于 \(50\%\) 的数据,\(n ≤ 2000\)
  对于 \(70\%\) 的数据,\(n ≤ 500000\)
  对于 \(100\%\) 的数据,\(n ≤ 10^5\)

【来源】

  Mr.he

信息

ID
2128
难度
(无)
分类
树结构 | 差分 点击显示
标签
递交数
0
已通过
0
通过率
?
上传者