#CSP260203. 区间完美匹配

区间完美匹配

区间完美匹配

时间限制:22 秒。内存限制:512512 MB。

题目描述

给定一棵有 nn 个顶点的树,顶点编号为 1,2,…,n1,2,\ldots,n,顶点 vv 的权值为整数 ava_v。

给定 qq 个询问,每个询问包含两个整数 L,RL,R。删除所有满足 L≤av≤RL\le a_v\le R 的顶点,以及与这些顶点相连的边,判断剩余森林是否存在完美匹配。

匹配是一个边集,其中任意两条边没有公共端点。如果剩余的每个顶点都恰好属于一条匹配边,则称其为完美匹配。约定空森林存在完美匹配。

各个询问相互独立,每次都是在原树基础上删除满足 L≤av≤RL\le a_v\le R 的顶点。

输入格式

输入文件:forest.in。

第一行包含两个整数 n,qn,q。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

接下来 n−1n-1 行,每行包含两个整数 u,vu,v,表示树的一条边。

接下来 qq 行,每行包含两个整数 L,RL,R,表示一个询问。

输出格式

输出文件:forest.out。

对每个询问,输出一行。如果剩余森林存在完美匹配,输出 Yes\texttt{Yes};否则输出 No\texttt{No}。

样例

输入:

4 4
1 2 3 4
1 2
2 3
3 4
2 3
1 2
1 4
5 5

输出:

No
Yes
Yes
Yes

样例解释

第一个询问留下两个孤立顶点,不存在完美匹配。第二个询问留下边 {3,4}\{3,4\},这条边构成完美匹配。第三个询问删除全部顶点,按约定答案为 Yes\texttt{Yes}。第四个询问没有删除顶点,可以选择边 {1,2}\{1,2\} 和 {3,4}\{3,4\}。

附加样例 forest2.in/.ans\texttt{forest2.in/.ans}、forest3.in/.ans\texttt{forest3.in/.ans}、forest4.in/.ans\texttt{forest4.in/.ans}、forest5.in/.ans\texttt{forest5.in/.ans} 分别满足测试点 3∼63\sim6、10∼1210\sim12、13∼1413\sim14、17∼2017\sim20 的限制。

数据范围

测试点编号 n≤n\le q≤q\le 特殊性质
1—2 2020 无
3—6 20002000
7—9 10510^5 2020
10—12 10510^5 AA
13—14 BB
15—16 2×1042\times10^4 无
17—20 10510^5

对于所有测试点,1≤n,q≤1051\le n,q\le10^5,−109≤av,L,R≤109-10^9\le a_v,L,R\le10^9,L≤RL\le R,1≤u,v≤n1\le u,v\le n。输入的 n−1n-1 条边构成一棵树,所有输入数值均为整数。

特殊性质 AA:存在一个顶点与其他所有顶点直接相连。

特殊性质 BB:对于每个顶点 vv,都有 av∈{0,1}a_v\in\{0,1\}。