P9822[CF1464F] My Beautiful Madness | ||
|
问题描述
给定一棵 \(n\) 个节点的树。
用 \((a,b)\) 表示节点节点 \(a\) 和节点 \(b\) 之间的简单路径。两个节点的距离定义为它们的简单路径的边数。一个节点和一条路径的距离定义为这个节点到路径上所有节点距离的最小值。一条路径的 \(d-\) 邻域定义为与这条路径的距离不超过 \(d\) 的所有节点。例如一条路径的 \(0-\) 邻域就是这条路径上的所有节点。
你要维护一个由简单路径组成的可重集合 \(P\) ,支持以下操作:
- \(1\ \ u\ \ v\) :向可重集合 \(P\) 中添加一条简单路径 \((u,v)\) 。其中 \(1\leq u,v\leq n\) 。
- \(2\ \ u\ \ v\) :从可重集合 \(P\) 中删除一条简单路径 \((u,v)\) 。其中 \(1\leq u,v\leq n\) 。注意 \((u,v)=(v,y)\) ,当 \(P=\{(1,2),\ (1,2)\}\) 时如果执行删除路径 \((2,1)\) 的操作则可重集合变成 \(P=\{(1,2)\}\) 。这类操作保证在操作之前可重集合 \(P\) 中一定存在 \((u,v)\) 或者 \((v,u)\) 。
- \(3\ \ d\) :查询 \(P\) 中所有路径的 \(d-\) 邻域是否非空。其中 \(0\leq d\leq n-1\) 。如果非空输出
Yes
否则输出No
。这类操作至少有一次,且保证每次执行这类操作时 \(P\neq \varnothing\) 。
输入格式
第一行两个整数 \(n,q\) ,表示树的节点数和操作的次数。
接下来 \(n-1\) 行,每行两个整数 \(x_i,y_i\) 表示一条边。
接下来 \(q\) 行,每行一个操作,格式如“题目描述”中所述。
输出格式
每次第 \(3\) 种操作,输出一行答案。
样例输入 1
1 4
1 1 1
1 1 1
2 1 1
3 0
样例输出 1
Yes
样例输入 2
5 3
1 2
1 3
3 4
4 5
1 1 2
1 5 5
3 1
样例输出 2
No
样例输入 3
10 6
1 2
2 3
3 4
4 7
7 10
2 5
5 6
6 8
8 9
1 9 9
1 9 8
1 8 5
3 0
3 1
3 2
样例输出 3
No
Yes
Yes
提示
\(1\leq n\leq 2\times 10^5\)
\(2\leq q\leq 2\times 10^5\)
\(1\leq x_i,y_i \leq n\)
\(1\leq u,v\leq n\)
\(0\leq d\leq n-1\)
输入的所有数都是整数
数据nodgd造