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).

第一行包含一个整数 nn(1≤n≤1051 \leq n \leq 10^5)。接下来的 n−1n-1 行每行包含两个整数 uiu_i 和 viv_i(1≤ui,vi≤n1 \leq u_i, v_i \leq n;ui≠viu_i \neq v_i),表示节点 uiu_i 与 viv_i 之间存在一条边。

下一行包含 nn 个整数,其中第 ii 个数对应 initiinit_i(initiinit_i 为 00 或 11)。再下一行也包含 nn 个整数,其中第 ii 个数对应 goaligoal_i(goaligoal_i 为 00 或 11)。

输出格式

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测评打分。不知道怎么写?

首页