#P9962. 树论(一)

树论(一)

树论(一)

Problem Description

一天,学傻了的Yoshinow在学数论时,迷失在了数论的黑暗森林里! (因为是在数论森林里!)现在Yoshinow得到了一棵树,现在他想知道:在某个以 r r 为根的子树内,有多少点对 (i,j) (i,j) ,满足 i,j i,j 的最小公倍数不超过 x x (注意是编号的lcm) 由于Yoshinow非常——好奇,所以他现在一共有 Q Q 个这样的询问。 **形式化地说:**给定 n n 个结点的有根树(以 1 1 为根),结点标号从 1 1 n n ,共有 Q Q 次询问,每次询问给出两个参数 r,xr,x ,表示询问有多少点对 (i,j)(i,j),满足:

  • 1、i,ji,j[1,n] [1,n] 内的正整数。
  • 2、lcm(i,j)x lcm(i,j)\leq x .
  • 3、标号为 i,ji,j 的结点均在以 rr 为根的子树内。 注:对于正整数x,y x,y lcm(x,y) lcm(x,y) 表示 x,y x,y 的最小公倍数,即同时是 x,y x,y 倍数的最小正整数。例如,10 10 12 12 的最小公倍数是 60 60 ,即 lcm(10,12)=60 lcm(10,12)=60 .

Input

第一行输入一个正整数 TT,表示测试用例组数,1T3 1\leq T\leq 3 . 对每组询问:第一行输入一个整数nn,其中1n105 1\leq n\leq 10^5 。 接下来 n1n-1 行,每行两个整数 u,v(1u,vn) u,v(1\leq u,v\leq n) ,表示 u,vu,v 之间有一条边。保证给出的 nn 个点构成树。 接下来一行一个整数QQ,表示询问组数,1Q106 1\leq Q\leq 10^6 . 接下来 QQ 行,每行两个整数 r,x(1rn,0x105) r,x(1\leq r\leq n,0\leq x\leq 10^5) ,表示一个询问。

Output

TT 行,对每组测试用例,输出一行共 QQ 个整数,按顺序给出对应询问的答案,相邻整数用空格隔开。

Sample Input

1
7
1 3
1 7
3 2
3 5
5 4
5 6
5
3 23
5 10
5 30
1 5
1 7

Sample Output

23 3 9 15 27

Hint

样例给出的树如图所示: 图片 对于第一个询问,r=3,x=23r=3,x=23r=3r=3 的子树内共有 55 个点,有 52=255^2=25 对点对,除了 (5,6),(6,5)(5,6),(6,5) 的最小公倍数是 30>2330>23 外,其余每个点对都满足最小公倍数不超过 2323 的条件,因此答案是 252=2325-2=23.

Source

2024“钉耙编程”中国大学生算法设计超级联赛(5)