问题 2993 --2019普及模拟题2-D

2993: 2019普及模拟题2-D

时间限制: 1 Sec  内存限制: 128 MB
提交: 7  解决: 3
[提交][状态][命题人:]

题目描述

小潘学习了关于树上公共祖先的知识。

LCA(Lowest Common Ancestors),即最近公共祖先,是这样一个问题:在有根树中,找出某两个结点 u 和 v 最近的公共祖先(或者说,离树根最远的公共祖先)。

现在给定一棵树,给定树根,小何不断给出询问 ai ,小潘 需要回答出有多少点对(x,y)(其中 x,y 可以相等)的 LCA 是 ai,答案对10^9+7取模

输入

第一行三个整数,分别表示 n,m,root

接下来 n-1行每行两个整数,表示边连接着 ui,vi

接下来一行 m 个整数,第 i 个表示 ai

输出

对于每次询问回答有多少个点对的 LCA 符合条件
样例输入
Copy
7 3 1
1 2
1 3
2 4 
2 5
3 6
3 7
1 2 4
样例输出
Copy
31
7
1

提示

对于 20% 的数据,1n,m500

对于 50% 的数据,1n,m10^4

对于 100% 的数据,1n,m10^6

来源

 

[提交][状态]