题目描述

给定一棵 nn 个点的带权树,结点下标从 11 开始到 NN 。寻找树中找两个结点,求最长的异或路径。

异或路径指的是指两个结点之间唯一路径上的所有节点权值的异或。

输入输出格式

输入格式:

第一行一个整数 NN ,表示点数。

接下来 n-1n−1 行,给出 u,v,wu,v,w ,分别表示树上的 uu 点和 vv 点有连边,边的权值是 ww 。

输出格式:

一行,一个整数表示答案。

输入输出样例

输入样例#1:

4
1 2 3
2 3 4
2 4 6

输出样例#1:

7

说明

最长异或序列是1-2-3,答案是 7 (=3 ⊕ 4)

数据范围

1\le n \le 100000;0 < u,v \le n;0 \le w < 2^{31}1≤n≤100000;0<u,v≤n;0≤w<2^31

为什么不叫trie树模板题呢???

练练板子hhhh

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=100005;
int ci[35],n,m,Xor[maxn],c=0,ch[maxn*57][2],R=0,A=0;
int to[maxn*2],ne[maxn*2],val[maxn*2],num,hd[maxn];
inline void add(int x,int y,int z){ to[++num]=y,ne[num]=hd[x],hd[x]=num,val[num]=z;}inline void Ins(int x){int now=R;for(int i=30,u;i>=0;i--){u=(ci[i]&x)?1:0;if(!ch[now][u]) ch[now][u]=++c;now=ch[now][u];}
}int F(int x){int now=R,an=0;for(int i=30,u;i>=0;i--){u=(ci[i]&x)?0:1;if(ch[now][u]) an+=ci[i],now=ch[now][u];else now=ch[now][u^1];}return an;
}void dfs(int x,int fa){A=max(A,F(Xor[x])),Ins(Xor[x]);for(int i=hd[x];i;i=ne[i]) if(to[i]!=fa){Xor[to[i]]=Xor[x]^val[i];dfs(to[i],x);}
}int main(){ci[0]=1;for(int i=1;i<=30;i++) ci[i]=ci[i-1]<<1;scanf("%d",&n);int uu,vv,ww;for(int i=1;i<n;i++) scanf("%d%d%d",&uu,&vv,&ww),add(uu,vv,ww),add(vv,uu,ww);dfs(1,-1);printf("%d\n",A);return 0;
}

  

转载于:https://www.cnblogs.com/JYYHH/p/9026855.html

洛谷 P4551 最长异或路径相关推荐

  1. 01tire+洛谷P4551 最长异或路径

    题目: 给定一棵n个点的带权树,结点下标从1开始到N.寻找树中找两个结点,求最长的异或路径. 异或路径指的是指两个结点之间唯一路径上的所有边权的异或. 输入格式 第一行一个整数NN,表示点数. 接下来 ...

  2. P4551 最长异或路径

    P4551 最长异或路径 题意: 给定一棵 n 个点的带权树,结点下标从 1 开始到 n.寻找树中找两个结点,求最长的异或路径. 异或路径指的是指两个结点之间唯一路径上的所有边权的异或. 题解: 我们 ...

  3. luoguP4551最长异或路径

    P4551最长异或路径 链接 luogu 思路 从\(1\)开始\(dfs\)求出\(xor\)路径.然后根据性质\(x\)到\(y\)的\(xor\)路径就是\(xo[x]^xo[y]\) 代码 # ...

  4. 洛谷P1807 最长路_NOI导刊2010提高(07) 求有向无环图的 最长路 图论

    洛谷P1807 最长路_NOI导刊2010提高(07) 图论 求有向无环图的 最长路 首先阐明一点 最长路dijkstra 是不能做 (当然我是不会做的,不过我貌似看到过网上的dalao有用dijst ...

  5. 信息学奥赛一本通 1116:最长平台 | OpenJudge NOI 1.9 12:最长平台 | 洛谷 B2097 最长平台

    [题目链接] ybt 1116:最长平台 OpenJudge NOI 1.9 12:最长平台 洛谷 B2097 最长平台 [题目考点] 1. 数组中做统计 2. 求最大值 [解题思路] 解法1:遍历并 ...

  6. YBTOJ洛谷P4551:最长异或路径(trie树)

    洛谷传送门 文章目录 题目描述 解析 代码 题目描述 解析 本题关键就在于一点: 若把每个点的深度dep[i]定义为从根到节点边权的异或和 那么i到j的路径异或和可以表示为: dep[i] ^ dep ...

  7. 洛谷 P2420 让我们异或吧

    P2420 让我们异或吧 题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中-xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B ...

  8. 洛谷 - P3358 最长k可重区间集问题(最大费用最大流+思维建边)

    题目链接:点击查看 题目大意:给出n个开区间,现在要求从中选取一定数量的区间,需要满足: 对于任意点x,所选取的区间中包含点x的个数小于等于k 区间长度和最大 要求输出最长的区间长度和 题目分析:一开 ...

  9. 图论--最长路--洛谷P1807 最长路_NOI导刊2010提高(07)

    题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入格式 ...

最新文章

  1. CBA 赛程的笔记 - 北京首钢
  2. 【对讲机的那点事】车载台天线系统故障的检测、排除方法(上)
  3. java线程池有哪几种,真香系列
  4. 数据库工程开发秘籍之TSQL 存储过程user stored procedure的概念与案例实战
  5. suList() 和 asList()
  6. EntitySpaces2009的开发文档地址
  7. OpenJudge NOI 1.8 24:蛇形填充数组
  8. general protection fault怎么办_法院离婚调解书我想办补充协议怎么办?-免费法律咨询...
  9. OpenPilot 0.3.2 发布,开源自动驾驶技术
  10. python基本数据类型——set
  11. 举例说明指针的运算方法c语言,C语言中指针的使用方法
  12. c语言汇率转换代码_C语言人民币转换代码..doc
  13. selenium IDE下载及使用
  14. oracle ap tp是什么,AP模式和Router模式区别是什么
  15. 在Android中加入GOOGLE统计系统
  16. 怎么安装java_怎么安装打印机到电脑步骤
  17. 基于GPT-4的免费代码生成工具
  18. 锐龙R3 3300X和R5 3500X 哪个好
  19. 条形码控件TBarCode SDK系列教程一(TBarCode OCX篇)
  20. 怎样使用word的朗读文本功能

热门文章

  1. 计算机用户域怎么删除,如何查找并删除AD域中多余的计算机帐号?
  2. java mac sh_如何创建AppleScript或Command文件以在Mac OS上启动Java应用程序?
  3. 【ruoyi若依】flot 图表跑版
  4. MySQL 查看执行计划
  5. uniapp H5页面使用uni.request时,出现跨域问题
  6. html5页面被键盘挡住,HTML5 虚拟键盘出现挡住输入框怎么办
  7. c语言个人账册报告的课题来源,C语言个人账簿管理系统报告
  8. red hat 6 安装php,Red hat linux服务器简明安装手册(OpenSSL+Mysql+Apache2+PHP)
  9. 特征值和特征向量到底描述了什么
  10. MapReduce 在Shuffle阶段 内存溢出原因分析及处理方法