问题描述
GTW有一颗$n$个节点的树,其中有$m$个点是特殊点。 第$i$个点的点权是$v_i$。
定义$Dis(x,y)$为x,y路径上每个点点权的最大公约数。
定义$jabby(x,y)$为x,y路径上特殊点的个数。
$ans=\prod_{i=1}^{n}\prod_{j=i}^{n}max(1,Dis(i,j)*min(1,jabby(i,j)))$
由于ans可能会很大,最后ans对$10^9+7$取模。
输入描述
第一行一个整数T,表示有T组数据。($t\leq 6$)
对于每一组数据 第一行有一个整数$n$,表示节点个数。($1\leq n \leq 200000$)
接下来$n-1$行,每行有两个数$x,y$,表示$x$和$y$之间有一条无向边。
接下来一行,共有$n$个整数 $v_1,v_2,...,v_n$,$v_i$表示第i个点的权值。($1\leq vi\leq 100000$)
接下来一行有一个整数$m$,表示特殊点的个数。($1\leq m\leq n$)
接下来m行,每行有一个整数$g$,表示$g$号点是特殊点。
数据保证给出的$m$个点互不相同。
输出描述
共T行,每行一个整数ans。
输入样例
1
2
1 2
2 2
2
1
2
输出样例
8
Hint
对于样例:ans=2*2*2=8。
如果你想要增加栈的大小,请在代码中加入 #pragma comment(linker, "/STACK:102400000,102400000") 并且使用c++提交