CF1778F Maximizing Root

题目描述

给定一棵有 $n$ 个顶点的有根树,顶点编号为 $1$ 到 $n$,顶点 $1$ 是树的根。每个顶点有一个整数值,第 $i$ 个顶点的值为 $a_i$。你最多可以进行 $k$ 次如下操作: - 选择一个之前未被选择过的顶点 $v$,以及一个整数 $x$,其中 $x$ 是 $v$ 的子树中所有顶点值的公约数。将 $v$ 的子树中每个顶点的值都乘以 $x$。 请问,最多进行 $k$ 次操作后,根节点 $1$ 的最大可能值是多少?即最大化 $a_1$ 的值。 一棵树是一个无环连通无向图。有根树是指定了一个根节点的树。节点 $u$ 的子树是所有满足从 $y$ 到根的简单路径经过 $u$ 的节点 $y$ 的集合。注意 $u$ 也在 $u$ 的子树中。

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 50\,000$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $k$($2 \leq n \leq 10^5$,$0 \leq k \leq n$),分别表示树的顶点数和操作次数。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 1000$),其中 $a_i$ 表示第 $i$ 个顶点的值。 接下来的 $n-1$ 行,每行包含两个整数 $u_i$ 和 $v_i$($1 \leq u_i, v_i \leq n$,$u_i \neq v_i$),表示树中顶点 $u_i$ 和 $v_i$ 之间有一条边。保证给出的边构成一棵树。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出在最多进行 $k$ 次操作后根节点的最大可能值。

说明/提示

两个样例的树结构相同: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1778F/6a70ae0aa91307af0a5148283774844759a80b11.png) 对于第一个测试用例,你可以进行如下两次操作: - 选择顶点 $4$ 的子树,$x=2$。![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1778F/efd9ed3fe3fe146d2c3ad22bdc3a0d5094263862.png) 操作后,节点值变为 $\{24, 12, 24, 12, 12\}$。 - 选择顶点 $1$ 的子树,$x=12$。![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1778F/448b3697478f6bf92a71b275bb4b714ad3a39227.png) 操作后,节点值变为 $\{288, 144, 288, 144, 144\}$。 此时根节点的值为 $288$,且为最大值。 对于第二个测试用例,你可以进行如下三次操作: - 选择顶点 $4$ 的子树,$x=2$。![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1778F/efd9ed3fe3fe146d2c3ad22bdc3a0d5094263862.png) 操作后,节点值变为 $\{24, 12, 24, 12, 12\}$。 - 选择顶点 $2$ 的子树,$x=4$。![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1778F/7004889d13c9800ff61e810a176c843b3201729c.png) 操作后,节点值变为 $\{24, 48, 24, 48, 48\}$。 - 选择顶点 $1$ 的子树,$x=24$。![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1778F/33e11b130545753fb9dc63bbfb2deaf72c859447.png) 操作后,节点值变为 $\{576, 1152, 576, 1152, 1152\}$。 此时根节点的值为 $576$,且为最大值。 由 ChatGPT 4.1 翻译