一般xor 的题目都是用trie解决。

那这道题是在树上的trie;

首先:从root==1,遍历树得到1到所有节点的xor 值。

然后对于每个点我们把其插入二进制树中。

对于每一个点查找其二进值异或值最大的数 依次遍历下来。

注意:边的数量开两倍以上,RE很多次。

find函数具体是这样的:

对于一个书二进值:10001000101

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstring>
#include<set>
#include<map>
#include<stdlib.h> #define N 223456
using namespace std;
struct edge
{
int v,w,next;
}e[N];
int tot,nid;
int head[N],ans[N];
int next[N*][];
void add(int u,int v,int w)
{
e[tot].v=v;
e[tot].w=w;
e[tot].next=head[u];
head[u]=tot++;
} void dfs(int u,int fa)
{
for (int i=head[u];i!=-;i=e[i].next)
{
int v=e[i].v;
if (v==fa) continue;
ans[v]=ans[u]^e[i].w;
dfs(v,u);
}
} void insert(int node,int d,int val)
{
if (d==) return;
int p=-d;
int c=(val&(<<p)) ? :; if (next[node][c]==-) next[node][c]=++nid;
insert(next[node][c],d+,val);
} int solve(int node,int d,int val)
{
if (d==) return ;
int p=-d;
int c=(val&(<<p))?:; if (next[node][c]!=-)
return (<<p)+solve(next[node][c],d+,val); return solve(next[node][!c],d+,val);
} int main()
{
int T;
scanf("%d",&T);
while (T--)
{
int n;
scanf("%d",&n);
memset(head,-,sizeof(head));
memset(next,-,sizeof(next));
memset(ans,,sizeof(ans));
tot=nid=;
for (int i=;i<n;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
add(v,u,w);
} dfs(,-);
for (int i=;i<=n;i++) insert(,,ans[i]);
int tmp=; for (int i=;i<=n;i++)
tmp=max(tmp,solve(,,ans[i]));
printf("%d\n",tmp);
}
return ;
}

我们先要判断           01110111010

存在否,这样才能达到最大值

最新文章

  1. CSS3中的伪类选择器详解
  2. 2016HUAS_ACM暑假集训4D - 计数,排列
  3. Matlab读入含有特殊分隔符的文件(textread)
  4. shell实现trim函数-去除字符串两侧的空格(包括tab,space键)
  5. UVa 10801 - Lift Hopping(dijkstra最短路)
  6. bootstrap小例子等
  7. 创建REST服务应用程序
  8. STL-next permutation
  9. Android开发-解决 AIDL 中找不到couldn&#39;t find import for class错误
  10. get set
  11. Android的JNI(NDK)使用备忘
  12. RESTful学习记录
  13. PHP中静态方法和实例化方法的区别
  14. mvn 手动安装jar 到本地库
  15. Google Maps API的使用
  16. Linux 访问控制列表(access control list)
  17. C入门注意事项
  18. jmeter使用手册
  19. 深入学习Tesseract-ocr识别中文并训练字库的方法
  20. Description Resource Path Location Type Cannot change version of project fac

热门文章

  1. js数组引用
  2. vba,自定义公式,农历互转公历,excel ,wps
  3. 8.3.3 快速系统调用 —— XP SP3上SystemCallStub的奇怪问题
  4. smile domain name www.bn-nd.com for sell. Please contact boyanzheng at foxmail.com 微笑的域名。请联系邮箱。
  5. Android(java)学习笔记177: 服务(service)之音乐播放器
  6. Java实现Web页面前数字字母验证码实现
  7. echo - 显示一行文本
  8. python导包一不小心就入坑(常用解决办法)
  9. VC无窗口控制台程序
  10. P2964 [USACO09NOV]硬币的游戏A Coin Game (DP)