记录编号 |
593829 |
评测结果 |
AAAAAATTTT |
题目名称 |
[ICPC 2017西安区域赛]树上异或xor |
最终得分 |
60 |
用户昵称 |
彭欣越 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
8.030 s |
提交时间 |
2024-09-17 15:19:40 |
内存使用 |
3.60 MiB |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,a[50010],mk[50010];
int head[50010],tot;
struct node {
int v,nxt;
}e[100010];
void add (int u,int v) {
e[++tot].v=v;
e[tot].nxt=head[u];
head[u]=tot;
}
void dfs (int fa,int u,int v,int idx,int k,ll sum) {
if (idx==k) sum^=a[u];
if (u==v) {
cout << sum <<endl;
return;
}
for (int i=head[u];i;i=e[i].nxt) {
if (e[i].v==fa) continue;
if (idx==k) dfs(u,e[i].v,v,1,k,sum);
else dfs(u,e[i].v,v,idx+1,k,sum);
}
}
int main () {
freopen("xor_xian.in","r",stdin);
freopen("xor_xian.out","w",stdout);
cin >> n >> m;
for (int i=1;i<n;i++) {
int a,b;
cin >> a >> b;
add(a,b);
add(b,a);
}
for (int i=1;i<=n;i++) cin >> a[i];
while (m--) {
int u,v,k;
cin >> u >> v >> k;
dfs(0,u,v,k,k,0);
}
return 0;
}