数据过水
查看原帖
数据过水
629608
zhangwenyuxuan楼主2024/8/13 14:38

我没有用01trie,处理完到根节点的异或和后暴力判断,循环到一定次数直接输出,结果过了。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int n,h[1000005],cnt,dis[1000005];
struct edge{
	int v,w,nx;
}e[2000005];
void add(int u,int v,int w){
	e[++cnt]={v,w,h[u]};
	h[u]=cnt;
}
void dfs(int rt,int f){
	for(int i=h[rt];i;i=e[i].nx){
		if(e[i].v!=f){
			dis[e[i].v]=dis[rt]^e[i].w;
			dfs(e[i].v,rt);
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<n;i++){
		int u,v,w;
		cin>>u>>v>>w;
		add(u,v,w);
		add(v,u,w);
	}
	dfs(1,0);
	int t=0,mx=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			mx=max(mx,dis[i]^dis[j]);
			t++;
			if(t>=100000000){
				cout<<mx;
				return 0;
			}
		}
	}
	cout<<mx;
	return 0;
}
2024/8/13 14:38
加载中...