CF414D Mashmokh and Water Tanks

题目描述

Mashmokh 正在玩一个新游戏。一开始他有 $k$ 升水和 $p$ 枚硬币。此外,他还有一棵有根树(无向连通无环图),共包含 $m$ 个结点。每个结点上都有一个一开始为空的水箱。 游戏的开始,Mashmokh 可以选择这些水箱中的一些(不超过 $k$ 个,且不能选择根结点的水箱),向它们每个倒入恰好 $1$ 升水。然后,进行如下流程,直到所有水箱中都没有水为止。 - 该流程包含若干步。 - 每一步开始时,Mashmokh 会打开所有水箱的门。接着,他可以选择关闭部分水箱的门(不能关闭根节点的水箱门),在本次操作中被关闭的水箱门会保持关闭。假设某水箱门被关闭且箱中有 $w$ 升水,Mashmokh 需要为关闭该水箱门支付 $w$ 枚硬币。 - 记 $x_1, x_2, ..., x_m$ 为以深度的非递减顺序排序的树的结点序列。需要按照此顺序依次处理每个结点。首先,$x_1$(即根结点)会被清空水。然后对于每个结点 $x_i$($i>1$),如果它的门被关闭则跳过,否则将该结点水箱中的所有水倒入它父亲结点的水箱(即使父亲结点门也被关闭)。 假设整个过程中总共进行了 $l$ 步,我们记第 $i$ 步结束后根结点水箱中的水量为 $w_i$,那么 Mashmokh 最终可以获得 $\max(w_1, w_2, ..., w_l)$ 美元。Mashmokh 很想知道,通过合理操作,他最多可以赢得多少钱。请你帮他计算这个最大值。

输入格式

输入的第一行包含三个由空格分隔的整数 $m, k, p\ (2 \leq m \leq 10^5;\ 0 \leq k, p \leq 10^9)$。 接下来的 $m-1$ 行,每行包含两个由空格分隔的整数 $a_i, b_i\ (1 \leq a_i, b_i \leq m; a_i \neq b_i)$,表示树上的一条边。 树的结点编号为 $1$ 到 $m$,根结点编号为 $1$。

输出格式

输出一个整数,即 Mashmokh 可以获得的最大金额。

说明/提示

下图展示了第一个样例中的树结构。黑色、红色、蓝色分别表示结点内水量为 0、1、2 的情况。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF414D/c32c25956aeb5f19835ae8010ab942b3e4600db9.png)实现获得最大金额的方法之一是将 1 升水分别倒入 3 号和 4 号结点。初始状态如下图所示。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF414D/0ece56653ffd25bc7155ae3d9fefd906a55801ad.png)第一步,Mashmokh 付出一枚硬币,将 3 号结点的水箱门关闭。此后的树状态如图: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF414D/258bc0038f42a2b22caf648c306ac35f43192ac5.png)第二步后,根节点内有 2 升水,如下图所示。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF414D/f9a31f68f8f511ebd76e9e0a46c30fc386393efb.png) 由 ChatGPT 5 翻译