给定一棵有 n 个顶点的带权树和两个点 a 和 b,边上有边权。你可以在任意时刻从当前所在的点跳到任意除了 b 以外的点。
你的目标是从顶点 a 出发,到达顶点 b,但是只有当通过一条边到达顶点 b 后,边权的异或和为 0 时才能到达。换句话说,只有当通过一条边到达顶点 b 后,边权的异或和为 0 时才能到达顶点 b。
此外,你最多可以在任意时刻从任意顶点传送到除顶点 b 以外的任意顶点,即使是顶点 a 也可以。
如果你能从顶点 a 到达顶点 b,输出 "YES";否则输出 "NO"。
第一行包含一个整数 t (1≤t≤1000),表示测试用例的数量。
每个测试用例的第一行包含三个整数 n、a 和 b (2≤n≤105),表示树的顶点数量,以及起始点和目标点的编号,满足 1≤a,b≤n 且 a=b。
接下来的 n−1 行描述了树的边。每行包含三个整数 ui、vi 和 wi,表示连接顶点 ui 和 vi 的边的权值为 wi (1≤ui,vi≤n;ui=vi;1≤wi≤109)。
保证所有测试用例中的顶点数量之和不超过 105。
对于每个测试用例,如果你能到达顶点 b,输出 "YES";否则输出 "NO"。
3
5 1 4
1 3 1
2 3 2
4 3 3
3 5 1
2 1 2
1 2 2
6 2 3
1 2 1
2 3 1
3 4 1
4 5 3
5 6 5
YES
NO
YES
对于第一个测试用例,我们可以从顶点 1 走到顶点 3,x 从 0 变为 1;然后从顶点 3 走到顶点 2,x 变为 3。现在,我们可以传送到顶点 3,再从顶点 3 走到顶点 4,最终到达顶点 b,因为最终 x 变为 0,所以我们应该输出 "YES"。
对于第二个测试用例,我们无法移动,因为我们无法传送到顶点 b,而我们唯一的移动是到达顶点 2,这是不可能的,因为到达时 x 不会等于 0,所以我们应该输出 "NO"。