每日一题 7月30日Xor Path 树上路径异或

题目链接:https://ac.nowcoder.com/acm/problem/20857
图片说明

思路:我们考虑每个点的经过次数就可以了。
1:u到其他所有点 n-1
2:u的子树之间
3:u的子树到除u的其他点(父节点以上)

#include<bits/stdc++.h>
#define LL long long
using namespace std;

vector<int> G[500005];
int a[500005];
LL siz[500005];
int n, ans=0;
void DFS(int u, int fa) {

    LL sum=n-1;//1
    for(auto to: G[u]) {
        if(to!=fa) {
            DFS(to, u);
            sum+=siz[u]*siz[to];//2
            siz[u]+=siz[to];
        }
    }

    sum+=siz[u]*(n-siz[u]-1);//3
    siz[u]++;
    if(sum%2) {
        ans^=a[u];
    }
}

int main() {

    int x, y;
    scanf("%d", &n);
    for(int i=1; i<n; i++) {
        scanf("%d%d", &x, &y);
        G[x].push_back(y);
        G[y].push_back(x);
    }
    for(int i=1; i<=n; i++) {
        scanf("%d", &a[i]);
    }
    DFS(1, 0);
    printf("%d\n", ans);

    return 0;
}
全部评论

相关推荐

争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-26 14:50
人力小鱼姐:有后面墨迹那两句的时间问题早回答完了
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
今天投了小鹏,收到了AI面,大概会问哪些啊?
期末一定及格:总共4个部分,心理测评、行测、然后就是问岗位、对岗位的理解、过往遇到了哪些难点怎么解决,很简单,没有什么特别专业的问题,都是一些综合素质相关的
小鹏汽车AI面6人在聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务