#P8200. [传智杯 #4 决赛] 生活在树上(easy version)
[传智杯 #4 决赛] 生活在树上(easy version)
题目背景
本题是 P8201 的简单版本,两道题目的解法略有不同。本题和 P8201 在题意上的区别在于本题给定树上的边权,而不是点权。
小智生活在「传智国」,这是一个有 个城市的国家,各个城市由 条道路相连。
每个道路都有长度 ,我们定义,小智从城市 走到城市 的代价是 $\mathrm{dis}_{a, b} = \bigoplus \limits_{e \in \mathrm{path}\left(a, b\right)} w_e$,其中 表示按位异或(如果你不知道什么是按位异或,请参见题目下方的提示/说明), 表示 到 的简单路径上的边集。也即 表示将 与 的简单路径上所有边写作 后,求 的结果。
有一天,小智获得了去参加传智杯的机会,他在前往比赛地的路上想到了一个问题,但他好像不会做,于是他把这个题告诉了你。聪明的同学,你可以帮帮他吗?
题目描述
小智说:「由于我们的国家只有 个城市和 条道路,那么我们的国家就相当于是一棵树。我在想,在我们的国家中,是否有城市满足『到城市 的代价和到城市 的代价的异或等于 』。好难哦,我想不出来,你能帮帮我吗?」
也就是说,给定城市 和整数 ,请你计算是否存在城市 满足 $\mathrm{dis}_{t, a} \bigoplus \mathrm{dis}_{t, b} = k$。
输入格式
第一行有两个整数 ,,表示国家的城市数和询问的个数。
接下来 行,每行有两个整数 ,表示城市 与城市 有一条长度为 的边。
接下来 行,每行有三个整数 ,表示小智从城市 走到城市 , 的含义与题目描述一致。
输出格式
共 行,每行一个整数。
对于第 个询问,如果存在至少一个城市 满足要求,则输出 Yes
。
如果不存在任何一个城市满足条件,则输出 No
。
输出字符串大小写不敏感,例如,Yes
、yES
、YES
、yes
等都算作 Yes
。
5 3
1 2 2
1 3 6
2 4 8
2 5 1
1 2 4
2 3 12
1 4 10
nO
No
YeS
5 10
2 1 63
3 1 57
4 2 2
5 2 84
5 2 84
4 1 9977404983223574764
2 5 84
2 1 15996060349666123522
5 4 86
3 1 8428615422876116375
5 1 107
2 3 6
2 3 6
4 2 2
yeS
nO
YEs
No
YEs
nO
YEs
yeS
yeS
YEs
提示
相关概念解释
「树」:树是一个有 个结点和 条边的无向简单连通图。
「按位异或」:按位异或即 C++、python、java 语言中的 「^」 运算。它是一个二元运算,步骤是将两个数的二进制位按位比较,相同为 ,不同为 。例如:$3 \bigoplus 5 = (011)_2 \bigoplus (101)_2 = (110)_2 = 6$。请注意,这是一个按位运算,不是一个逻辑运算。
样例 1 解释
下图为传智国的地图。
,都不可能有 $\mathrm{dis} _{t,1} \bigoplus \mathrm{dis}_{t, 2} = 4$,$\mathrm{dis}_{t, 2} \bigoplus \mathrm{dis}_{t, 3} = 12$,于是输出 No
;
而取 ,有 $\mathrm{dis}_{t, 1} \bigoplus \mathrm{dis}_{t, 4} = 10$,于是输出 Yes
。
数据规模与约定
对于所有测试点,保证 ,,。
对于每次询问,保证 且 ,。