#P10008. 树上询问
树上询问
树上询问
Problem Description
给定一个大小为 的树,第 个节点点权为 ,其中 是一个大小为 的排列。接下来你要处理 次以下两种操作之一:
- 给定树上两点 和 ,交换 和 。
- 给定区间 ,询问是否存在树上两点 和 ,使得 到 路径上的点权恰好为 区间内所有整数。
Input
输入第一行包含一个整数 (),表示测试数据的组数。 对于每组测试数据, 输入第一行包含一个整数 (),表示树的大小。 输入第二行包含 个整数 (),表示节点的点权。保证 是一个大小为 的排列。 接下来 行,每行两个整数 , (),表示存在一条连接节点 与节点 的边。保证所有边构成一棵树。 接下来一行输入一个整数 (),表示操作的数量。 接下来 行表示操作,第 次操作为两种操作中的一种:
$1\ x\ y$
(),表示交换节点 和 的点权。注意, 和 可能相同。$2\ l \ r$
(),表示询问的区间。
Output
对于每次操作 ,输出一行一个字符串 Yes
或 No
,分别表示树上存在/不存在满足条件的节点 与 。
Sample Input
2
5
1 2 3 4 5
1 2
1 3
3 4
3 5
3
2 1 3
1 3 4
2 1 3
4
1 2 3 4
1 2
2 3
3 4
1
2 1 4
Sample Output
Yes
No
Yes
Source
2024“钉耙编程”中国大学生算法设计超级联赛(9)