比赛 中秋节快乐! 评测结果 AAAAAATTTT
题目名称 树上异或xor 最终得分 60
用户昵称 wdsjl 运行时间 8.024 s
代码语言 C++ 内存使用 3.90 MiB
提交时间 2024-09-17 11:54:15
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

const int N = 50010;

struct E{
	int to,ne;
}e[N*2];

int tot,h[N],vv;

void add(int x,int y){
	e[tot].to=y,e[tot].ne=h[x],h[x]=tot++;
	return ;
} 

int a[N],cnt,n,q,s,en,k;

void dfs(int u,int fa,int stp,int val){
	if(stp==k)val^=a[u],stp=0;
	if(u==en){
		cnt=val;
		return;
	}
	for(int i=h[u];~i;i=e[i].ne){
		int v=e[i].to;
		if(v==fa)continue;
		dfs(v,u,stp+1,val);
	}
	return ;
}

int main(){
	freopen("xor_xian.in","r",stdin);
	freopen("xor_xian.out","w",stdout);
	memset(h,-1,sizeof(h));
	scanf("%d%d",&n,&q);
	for(int i=1;i<n;i++){
		int u,v;
		scanf("%d%d",&u,&v);
		add(u,v);
		add(v,u);
	}
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]); 
	}
	for(int i=1;i<=q;i++){
		scanf("%d%d%d",&s,&en,&k);
		cnt=0;
		dfs(s,-1,0,a[s]);
		printf("%d\n",cnt); 
	}
	return 0;
}