CF429A.Xor-tree
普及-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Iahub is very proud of his recent discovery, propagating trees. Right now, he invented a new tree, called xor-tree. After this new revolutionary discovery, he invented a game for kids which uses xor-trees.
The game is played on a tree having n nodes, numbered from 1 to n. Each node i has an initial value init__i, which is either 0 or 1. The root of the tree is node 1.
One can perform several (possibly, zero) operations on the tree during the game. The only available type of operation is to pick a node x. Right after someone has picked node x, the value of node x flips, the values of sons of x remain the same, the values of sons of sons of x flips, the values of sons of sons of sons of x remain the same and so on.
The goal of the game is to get each node i to have value goal__i, which can also be only 0 or 1. You need to reach the goal of the game by using minimum number of operations.
伊阿胡布为他最近发现的“传播树”感到非常自豪。目前,他发明了一种新树,称为“异或树(xor-tree)”。在这一革命性新发现之后,他又为孩子们设计了一款使用异或树的游戏。
该游戏在一个含有 $ n $ 个节点的树上进行,节点编号为 $ 1 $ 到 $ n $。每个节点 $ i $ 具有一个初始值 $ \text{init}_i $,其值仅为 $ 0 $ 或 $ 1 $。树的根节点为节点 $ 1 $。
游戏过程中,玩家可对树执行若干次(可能为零次)操作。唯一允许的操作是选择一个节点 $ x $。一旦选中节点 $ x $,则:节点 $ x $ 的值发生翻转;$ x $ 的子节点的值保持不变;$ x $ 的孙节点(即子节点的子节点)的值发生翻转;$ x $ 的曾孙节点(即子节点的子节点的子节点)的值保持不变;依此类推。
游戏的目标是使每个节点 $ i $ 的最终值恰好等于目标值 $ \text{goal}_i $,其中每个 $ \text{goal}_i $ 同样仅为 $ 0 $ 或 $ 1 $。你需要以最少的操作次数达成该目标。
输入格式
The first line contains an integer n (1 ≤ n ≤ 105). Each of the next n - 1 lines contains two integers u__i and v__i (1 ≤ u__i, v__i ≤ n; u__i ≠ v__i) meaning there is an edge between nodes u__i and v__i.
The next line contains n integer numbers, the i-th of them corresponds to init__i (init__i is either 0 or 1). The following line also contains n integer numbers, the i-th number corresponds to goal__i (goal__i is either 0 or 1).
第一行包含一个整数 n(1≤n≤105)。接下来的 n−1 行每行包含两个整数 ui 和 vi(1≤ui,vi≤n;ui=vi),表示节点 ui 与 vi 之间存在一条边。
下一行包含 n 个整数,其中第 i 个数对应 initi(initi 为 0 或 1)。再下一行也包含 n 个整数,其中第 i 个数对应 goali(goali 为 0 或 1)。
输出格式
In the first line output an integer number cnt, representing the minimal number of operations you perform. Each of the next cnt lines should contain an integer x__i, representing that you pick a node x__i.
第一行输出一个整数 cnt,表示你执行的最少操作次数。接下来的 cnt 行中,每行输出一个整数 x__i,表示你选择节点 x__i。
输入输出样例
输入#1
10 2 1 3 1 4 2 5 1 6 2 7 5 8 6 9 8 10 5 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 1 0 1
输出#1
2 4 7
输入解题思路,AI测评打分。不知道怎么写?