定义两点的距离$d(x,y)$为$x$到$y$路径上边权异或和,则两棵树相同当且仅当$\forall 1\le i\le n$,$d(1,i)$相同

新建一个节点0,连边$(0,1)$,初始权值为0,且不能以这条边为对象操作(但操作与1相连的边会影响其)

记$d_{i}=d(0,i)$,考虑一次操作$(x,y)$对$d_{i}$的影响,恰好是交换$d_{x}$和$d_{y}$

最终,令$a_{i}$为目标树中$d(1,i)$的值,即要求$d_{i}\oplus d_{1}=a_{i}$

同时,记$b_{i}$为初始树中$d(0,i)$的值(也即$d(1,i)$),那么$d_{i}$即$b_{i}$重新排列的结果,有$\bigoplus_{i=1}^{n}d_{i}=\bigoplus_{i=1}^{n}b_{i}$

将之代入前者,根据$n$为奇数,可得$d_{1}=\bigoplus_{i=1}^{n}a_{i}\bigoplus_{i=1}^{n}b_{i}$,再判定$d_{1}$是否在本来的$b_{i}$中,以及$b_{i}\oplus d_{1}$是否等于$a_{i}$(排序后的结果)即可

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 struct Edge{
5 int nex,to,len1,len2;
6 }edge[N<<1];
7 int E,n,x,y,z1,z2,head[N],a[N],b[N];
8 void add(int x,int y,int z1,int z2){
9 edge[E].nex=head[x];
10 edge[E].to=y;
11 edge[E].len1=z1;
12 edge[E].len2=z2;
13 head[x]=E++;
14 }
15 void dfs(int k,int fa,int s1,int s2){
16 b[k]=s1;
17 a[k]=s2;
18 for(int i=head[k];i!=-1;i=edge[i].nex)
19 if (edge[i].to!=fa)dfs(edge[i].to,k,s1^edge[i].len1,s2^edge[i].len2);
20 }
21 int main(){
22 scanf("%d",&n);
23 memset(head,-1,sizeof(head));
24 for(int i=1;i<n;i++){
25 scanf("%d%d%d%d",&x,&y,&z1,&z2);
26 add(x,y,z1,z2);
27 add(y,x,z1,z2);
28 }
29 dfs(1,0,0,0);
30 for(int i=1;i<=n;i++)b[0]^=a[i];
31 for(int i=1;i<=n;i++)b[0]^=b[i];
32 for(int i=1;i<=n;i++)b[i]^=b[0];
33 sort(a+1,a+n+1);
34 sort(b+1,b+n+1);
35 if (b[1]){
36 printf("NO");
37 return 0;
38 }
39 for(int i=1;i<=n;i++)
40 if (a[i]!=b[i]){
41 printf("NO");
42 return 0;
43 }
44 printf("YES");
45 }

[atAGC052B]Tree Edges XOR的更多相关文章

  1. CF1055F Tree and XOR

    CF1055F Tree and XOR 就是选择两个数找第k大对儿 第k大?二分+trie上验证 O(nlognlogn) 直接按位贪心 维护可能的决策点(a,b)表示可能答案的对儿在a和b的子树中 ...

  2. 解题:CF1055F Tree and XOR

    题面 树上路径是可以通过到根的路径和LCA差出来的,所以建立一棵Trie树按位贪心即可......吗? 发现空间并不够,需要我们每层现建,要记录每个数和它异或答案之后在这一层插进去的编号 #inclu ...

  3. [atAGC052F]Tree Vertices XOR

    结论 注意到如果$x$周围有偶数个1,对$x$操作显然不会改变$a_{x}$,因此不妨强制操作的点周围要有奇数个1,不难发现此时恰好会改变该点,即令$a_{x}=a_{x}\oplus 1$ 称$\{ ...

  4. Weights Assignment For Tree Edges

    题目: (我的题目很长,你忍一下--) 题目分析: 这道题目的体面比较复杂,先是讲了一下树是怎样的一个结构,并且告诉我们在这里,他是以什么样的一种方式描述一棵树的,就是通过描述每个节点的父节点是哪个( ...

  5. codeforces 342E :Xenia and Tree

    Description Xenia the programmer has a tree consisting of n nodes. We will consider the tree nodes i ...

  6. BZOJ3282: Tree

    传送门 又是权限题= =,过了NOIp我就要去当一只权限狗! LCT裸题,get到了两个小姿势. 1.LCA操作应该在access中随时updata 2.Link操作可以更简单 void Link(i ...

  7. CodeForces 682C Alyona and the Tree (树+dfs)

    Alyona and the Tree 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/C Description Alyona ...

  8. cf202-div 1-B - Apple Tree:搜索,数论,树的遍历

      http://codeforces.com/contest/348/problem/B   B. Apple Tree time limit per test 2 seconds memory l ...

  9. Codeforces Round #358 (Div. 2) C. Alyona and the Tree 水题

    C. Alyona and the Tree 题目连接: http://www.codeforces.com/contest/682/problem/C Description Alyona deci ...

随机推荐

  1. Dapr + .NET Core实战(十二)服务调用之GRPC

    什么是GRPC gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. gRPC 的主要优点是: 高性能轻量级 RPC 框架. 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的 ...

  2. C++核心编程 3 函数提高

    函数默认参数 在C++中,函数的形参列表中的形参是可以有默认值的: 语法:返回值类型 函数名 (参数 = 默认值){ } 实例: #include<iostream> using name ...

  3. SpringBoot+WebSocket实时监控异常

    写在前面 此异常非彼异常,标题所说的异常是业务上的异常. 最近做了一个需求,消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理. 因为 ...

  4. Linux中的文件使用FTP进行文件备份

    注意!!! 本文是在linux中进行ftp备份(备份到另一个linux服务器) 上传思路: 1.每次上传文件时, 后台接收文件, 使用transferTo上传到Linux服务器 2.把文件路径 + F ...

  5. 题解 Crash 的文明世界

    题目传送门 题目大意 给出一个\(n\)个点的树,和常数\(k\),对于\(\forall i\in[1,n]\),求出: \[\sum_{j=1}^{n} \text{dist}(i,j)^k \] ...

  6. 1002 写出这个数 (20 分) java解题

    读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10^100. 输出格式: 在一行内输 ...

  7. fastjson反序列化-JdbcRowSetImpl利用链

    fastjson反序列化-JdbcRowSetImpl利用链 JdbcRowSetImpl利用链 fastjson反序列化JdbcRowSetImpl - Afant1 - 博客园 (cnblogs. ...

  8. JavaScript05

    显示和隐藏 元素的显示和隐藏 元素display属性可控制元素的显示和隐藏,先获取元素对象,再通过点语法调用style对象中的display属性 语法格式: 元素.style.display='non ...

  9. AIApe问答机器人Scrum Meeting 4.29

    Scrum Meeting 4 日期:2021年4月29日 会议主要内容概述:汇报两日工作,讨论任务优先级. 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作中遇到的困难 李明 ...

  10. 【二食堂】Alpha - Scrum Meeting 4

    Scrum Meeting 4 例会时间:4.14 12:30 - 12:50 进度情况 组员 昨日进度 今日任务 李健 1. 主页面的搭建工作issue 1. 完成主页搭建**issue2. 与后端 ...