1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; vector<pair<int,int>>G[N]; int n,d[N]; void dfs(int x,int fa) { for(auto i:G[x]) { int y=i.first,w=i.second;if(y==fa)continue; d[y]=d[x]^w; dfs(y,x); } } int id,ch[31*N][2]; void ins(int x) { int p=0; for(int i=30;i>=0;i--) { int j=(x>>i)&1; if(ch[p][j]==0) ch[p][j]=++id; p=ch[p][j]; } } int query(int x) { int p=0,res=0; for(int i=30;i>=0;i--) { int j=(x>>i)&1; if(ch[p][!j]) p=ch[p][!j],res+=1<<i; else p=ch[p][j]; } return res; } int main() { scanf("%d",&n); for(int i=1,x,y,w;i<n;i++) { scanf("%d%d%d",&x,&y,&w);x++;y++; G[x].push_back({y,w}); G[y].push_back({x,w}); } memset(d,0,sizeof(d)); dfs(1,0); id=0;memset(ch,0,sizeof(ch)); for(int i=1;i<=n;i++)ins(d[i]); int ans=0; for(int i=1;i<=n;i++) ans=max(ans, query(d[i])); printf("%d\n",ans); return 0; }
- 1
信息
- ID
- 1283
- 时间
- 2000ms
- 内存
- 64MiB
- 难度
- 7
- 标签
- 递交数
- 229
- 已通过
- 50
- 上传者