CF1401D.Maximum Distributed Tree

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a tree that consists of nn nodes. You should label each of its n−1n-1 edges with an integer in such way that satisfies the following conditions:

  • each integer must be greater than 00;
  • the product of all n−1n-1 numbers should be equal to kk;
  • the number of 11-s among all n−1n-1 integers must be minimum possible.

Let's define f(u,v)f(u,v) as the sum of the numbers on the simple path from node uu to node vv. Also, let ∑i=1n−1∑j=i+1nf(i,j)\sum\limits_{i=1}^{n-1} \sum\limits_{j=i+1}^n f(i,j) be a distribution index of the tree.

Find the maximum possible distribution index you can get. Since answer can be too large, print it modulo 109+710^9 + 7.

In this problem, since the number kk can be large, the result of the prime factorization of kk is given instead.

你将得到一棵包含 nn 个节点的树。你需要为它的 n−1n-1 条边分别标上一个正整数,使得满足以下条件:

  • 每个整数必须大于 00;
  • 所有 n−1n-1 个整数的乘积恰好等于 kk;
  • 在所有 n−1n-1 个整数中,数字 11 的个数应尽可能少。

定义 f(u,v)f(u,v) 为从节点 uu 到节点 vv 的简单路径上所有边权值之和。再定义 ∑i=1n−1∑j=i+1nf(i,j)\sum\limits_{i=1}^{n-1} \sum\limits_{j=i+1}^n f(i,j) 为该树的分配指数(distribution index)。

请找出所能达到的最大分配指数。由于答案可能非常大,请输出其对 109+710^9 + 7 取模的结果。

在本题中,由于 kk 可能很大,输入直接给出 kk 的质因数分解结果。

输入格式

The first line contains one integer tt (1≤t≤1001 \le t \le 100) — the number of test cases.

The first line of each test case contains a single integer nn (2≤n≤1052 \le n \le 10^5) — the number of nodes in the tree.

Each of the next n−1n-1 lines describes an edge: the ii-th line contains two integers uiu_i and viv_i (1≤ui,vi≤n1 \le u_i, v_i \le n; ui≠viu_i \ne v_i) — indices of vertices connected by the ii-th edge.

Next line contains a single integer mm (1≤m≤6⋅1041 \le m \le 6 \cdot 10^4) — the number of prime factors of kk.

Next line contains mm prime numbers p1,p2,…,pmp_1, p_2, \ldots, p_m (2≤pi<6⋅1042 \le p_i \lt 6 \cdot 10^4) such that k=p1⋅p2⋅…⋅pmk = p_1 \cdot p_2 \cdot \ldots \cdot p_m.

It is guaranteed that the sum of nn over all test cases doesn't exceed 10510^5, the sum of mm over all test cases doesn't exceed 6⋅1046 \cdot 10^4, and the given edges for each test cases form a tree.

第一行包含一个整数 tt(1≤t≤1001 \le t \le 100)—— 测试用例的数量。

每个测试用例的第一行包含一个整数 nn(2≤n≤1052 \le n \le 10^5)—— 树中节点的数量。

接下来的 n−1n-1 行每行描述一条边:第 ii 行包含两个整数 uiu_i 和 viv_i(1≤ui,vi≤n1 \le u_i, v_i \le n;ui≠viu_i \ne v_i)—— 表示由第 ii 条边连接的两个顶点的编号。

下一行包含一个整数 mm(1≤m≤6⋅1041 \le m \le 6 \cdot 10^4)—— kk 的质因数个数。

再下一行包含 mm 个质数 p1,p2,…,pmp_1, p_2, \ldots, p_m(2≤pi<6⋅1042 \le p_i \lt 6 \cdot 10^4),满足 k=p1⋅p2⋅…⋅pmk = p_1 \cdot p_2 \cdot \ldots \cdot p_m。

保证所有测试用例的 nn 之和不超过 10510^5,所有测试用例的 mm 之和不超过 6⋅1046 \cdot 10^4,且每个测试用例给出的边构成一棵树。

输出格式

Print the maximum distribution index you can get. Since answer can be too large, print it modulo 109+710^9+7.

输出你能得到的最大分配指数。由于答案可能过大,请对 109+710^9+7 取模后输出。

输入输出样例

  • 输入#1

    3
    4
    1 2
    2 3
    3 4
    2
    2 2
    4
    3 4
    1 3
    3 2
    2
    3 2
    7
    6 1
    2 3
    4 6
    7 3
    5 1
    3 6
    4
    7 5 13 3

    输出#1

    17
    18
    286

说明/提示

In the first test case, one of the optimal ways is on the following image:

In this case, f(1,2)=1f(1,2)=1, f(1,3)=3f(1,3)=3, f(1,4)=5f(1,4)=5, f(2,3)=2f(2,3)=2, f(2,4)=4f(2,4)=4, f(3,4)=2f(3,4)=2, so the sum of these 66 numbers is 1717.

In the second test case, one of the optimal ways is on the following image:

In this case, f(1,2)=3f(1,2)=3, f(1,3)=1f(1,3)=1, f(1,4)=4f(1,4)=4, f(2,3)=2f(2,3)=2, f(2,4)=5f(2,4)=5, f(3,4)=3f(3,4)=3, so the sum of these 66 numbers is 1818.

在第一个测试用例中,一种最优方案如下图所示:

此时,f(1,2)=1f(1,2)=1,f(1,3)=3f(1,3)=3,f(1,4)=5f(1,4)=5,f(2,3)=2f(2,3)=2,f(2,4)=4f(2,4)=4,f(3,4)=2f(3,4)=2,因此这 66 个数的和为 1717。

在第二个测试用例中,一种最优方案如下图所示:

此时,f(1,2)=3f(1,2)=3,f(1,3)=1f(1,3)=1,f(1,4)=4f(1,4)=4,f(2,3)=2f(2,3)=2,f(2,4)=5f(2,4)=5,f(3,4)=3f(3,4)=3,因此这 66 个数的和为 1818。

输入解题思路,AI测评打分。不知道怎么写?

首页