热爆了
题号:NC23058
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

小 X 决定出一道送温暖题来和大家一起愉悦
他给了你一棵 n 个节点的树,每个点有个点权 a_i
现在他给了你 Q 个询问,每次会给定 L,R ,然后定义满足 的点 i 为关键点
你需要回答出满足下列至少一个条件的点 x 的个数:
1. x 是关键点
2. 在树上删去 x 和所有与其相连的边后,存在两个关键点 a,b ,使得 a 和 b 不连通

输入描述:

第一行两个整数 n,Q 
第二行 n 个整数,表示 a_i
接下来 n - 1 行,每行两个整数 u,v ,表示树上有一条连接点 u 和点 v 的边
接下来 Q 行,每行两个整数 L,R

输出描述:

Q 行,每行一个整数,表示本次询问的答案
示例1

输入

复制
5 4
7 7 7 1 10
1 2
1 3
2 4
2 5
1 10
1 7
7 10
1 1

输出

复制
5
4
4
1

备注:

对于所有的数据,保证
为了防止被卡常,请使用读入优化
在此顺便提供一个硬核优化:https://blog.csdn.net/sjzezwzy/article/details/81053639