#P16076. [Oni2019]TreeGCD

[Oni2019]TreeGCD

题目描述

Cătălin 在拜访祖父母时,在车库里发现了一台 1970 年的 Nintendo 游戏机。幸运的是,这台游戏机里还有一个叫做 TreeGCD 的游戏。

游戏给出一棵包含 NN 个节点的树,以及一个整数 MM

你需要给每个节点赋一个 11MM 之间的整数,使得任意两个相邻节点上的数都不是互质数。也就是说,对于任意一条边 (u,v)(u,v),都必须满足:

gcd(au,av)>1.\gcd(a_u,a_v)>1.

请你计算满足条件的赋值方案数。答案需要对 10000000071000000007 取模。

输入格式

第一行包含两个整数 N,MN,M

接下来 N1N-1 行,每行包含两个整数 x,yx,y,表示树上节点 xx 与节点 yy 相邻。

输出格式

输出一个整数,表示满足条件的赋值方案数对 10000000071000000007 取模后的结果。

数据范围与约定

  • 2N1002\le N\le 100
  • 2M100002\le M\le 10000

由于 N2N\ge 2,树中每个节点至少通过路径与其它节点相连,而赋值为 11 的节点与任意邻居的最大公约数都是 11,因此合法方案中实际上不会出现值 11

子任务

子任务 分值 限制
1 4 N=2, M1000N=2,\ M\le 1000
2 13 N6, M10N\le 6,\ M\le 10
3 40 N100, M100N\le 100,\ M\le 100
4 43 N100, M10000N\le 100,\ M\le 10000

样例 1

输入

2 6
1 2

输出

13

样例解释

可以给节点 1,21,2 赋值的有序数对为:

(2,2),(2,4),(2,6),(3,3),(3,6),(4,2),(4,4),(2,2),(2,4),(2,6),(3,3),(3,6),(4,2),(4,4), (4,6),(5,5),(6,2),(6,3),(6,4),(6,6).(4,6),(5,5),(6,2),(6,3),(6,4),(6,6).

1313 种。

样例 2

输入

5 6
5 3
3 1
5 4
3 2

输出

397

样例解释

答案为 397397

样例 3

输入

10 67
1 2
1 3
2 4
2 5
2 6
2 7
5 8
5 9
7 10

输出

534323877

样例解释

实际方案数为:

6315455578532062.6315455578532062.

10000000071000000007 取模后得到:

534323877.534323877.