比赛 中秋节快乐! 评测结果 WAWWWWTTTT
题目名称 树上异或xor 最终得分 10
用户昵称 彭欣越 运行时间 8.034 s
代码语言 C++ 内存使用 3.61 MiB
提交时间 2024-09-17 11:48:11
显示代码纯文本
#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;
}