luoguP4551最长异或路径
时间:2019-08-24
本文章向大家介绍luoguP4551最长异或路径,主要包括luoguP4551最长异或路径使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
P4551最长异或路径
链接
思路
从\(1\)开始\(dfs\)求出\(xor\)路径。然后根据性质\(x\)到\(y\)的\(xor\)路径就是\(xo[x]^xo[y]\)
代码
#include <bits/stdc++.h>
using namespace std;
const int _=1e5+7;
int xo[_],w[_],ans=-1,num=0;
struct node {
int v,q,nxt;
}e[_<<1];
int head[_],tot;
void add(int u,int v,int q) {
e[++tot].v=v;
e[tot].q=q;
e[tot].nxt=head[u];
head[u]=tot;
}
int ch[_*30][2],cnt;
void insert(int x,int ad) {
int p=0;
for(int i=30;i>=0;--i) {
bool k=x&(1<<i);
if(!ch[p][k]) ch[p][k]=++cnt;
p=ch[p][k];
}
}
void query(int x) {
int tmp=0,p=0;
for(int i=30;i>=0;--i) {
bool k=x&(1<<i);
if(ch[p][!k]) p=ch[p][!k],tmp|=1<<i;
else p=ch[p][k];
} ans=max(ans,tmp);
}
void dfs(int u,int fa) {
insert(xo[u],1);
for(int i=head[u];i;i=e[i].nxt) {
int v=e[i].v;
if(v==fa) continue;
xo[v]=xo[u]^e[i].q;
dfs(v,u);
}
}
int main() {
int n,u,v,q;
scanf("%d",&n);
for(int i=1;i<n;++i) {
scanf("%d%d%d",&u,&v,&q);
add(u,v,q),add(v,u,q);
}
dfs(1,0);
for(int i=1;i<=n;++i) query(xo[i]);
printf("%d\n",ans);
return 0;
}
原文地址:https://www.cnblogs.com/dsrdsr/p/11405999.html
- android GifView分享
- VAE、GAN、Info-GAN:全解深度学习三大生成模型
- android获取设备唯一标示
- 如果正确读取SQL Server中的扩展事件?
- android自定义xmls文件属性
- 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- jsoup详解
- 用LogParser对IIS 日志进行分析
- android异步任务asyntask详解
- 在Mono 2.8上部署ASP.NET MVC 2
- java虚拟机构造原理
- java造成内存泄露原因
- opensuse nginx+mono 2.8支持aspx环境的配置
- android-async-http详解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SwiftUI:获取应用进入后台的通知
- Windows格式化namenode报错 - Error: JAVA_HOME is incorrectly set. Please update F:hadoopconfhadoop-e...
- Windows格式化namenode报错 - ERROR namenode.NameNode: Failed to start namenode.
- Windows启动HDFS报错 - 系统找不到文件 hadoop。
- Windows启动HDFS报错 - org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
- Windows启动HDFS报错 - Could not locate Hadoop executable: E:soft_workhadoop-2.6.0binwinutils.exe
- Windows中jps命令无法查看java进程问题
- Windows搭建HDFS 2.6.0(附加搭建Hadoop)
- Windows搭建HBase 2.0.2
- 病毒与安全防护-网络安全
- 应用层安全协议-Kerberos
- 组网设备
- 网络管理
- 3.字体样式-CSS基础
- 求回文数