/ Vijos / 题库 /

组合树

组合树

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


【问题描述】

  Bob想要和Carrol玩游戏。但Carrol觉得玩游戏太无聊,就和Tuesday去写歌了。于是现在Bob来找你玩游戏。

  这个游戏是这样的:给定一棵 \(n\) 个节点的树, 1 号点为根节点,设 \(v\) 的父亲是 \(f(v)\) 。其中每个节点有一个颜色,要么是黑色,要么是白色。不妨记第 \(i\) 个节点的初始颜色是 \(c_i\)。\(c_i =0\) 或 \(1\),表示黑色或白色。

  在游戏开始时,Bob为每个节点选择一个目标颜色 \(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\) 个节点均存在,你才能执行这样的操作。当然,你可以执行任意多次操作。

  现在Bob要和你玩 \(T\) 次这样的游戏,每次你都想要知道你是否有可能完成要求,即通过若干次操作,将所有节点变成其目标颜色。

【输入格式】

  第一行仅一个数 \(T≤10\),表示这样的游戏的次数;
  接下来共有 \(T\) 组数据。对于每一组数据:
   第一行是两个正整数 \(n,k\),\(n\) 表示树的大小,\(k\) 的含义请参见题目描述。数据满足 \(n,k≤2×10^5\)。
   接下来 \(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 。

【输入输出样例】

 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

【输入输出样例解释】

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

【数据限制】

  对于 \(10\%\) 的数据,满足:\(1 ≤ n ≤ 5\)。
  对于 \(30\%\) 的数据,满足:\(1 ≤ n ≤ 20\)。
  对于 \(50\%\) 的数据,满足:\(1 ≤ n ≤ 2000\)。
  对于 \(70\%\) 的数据,满足:\(1 ≤ n ≤ 50000\)。
  对于 \(100\%\) 的数据,满足:\(1 ≤ n ≤ 200000\)。

【来源】

  Mr.he

信息

ID
2369
难度
(无)
分类
树结构 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
被复制
1
上传者