U113057 树上游戏
题目描述
在上古时代,有一个简单的树上游戏。能通关这个游戏的幸运签到者,将会收到一份小礼包。
树上游戏是这样的:
出题人会给挑战者一棵 $n$ 个结点的有根树,每个结点从 $1$ 到 $n$ 编号,有根树的根为 $1$ 号结点。
有根树的每个结点有权值,第 $i$ 个结点的权值为 $w_i$。对于有根树的每个结点,可以定义其深度为该结点到根结点路径上的结点数,第 $i$ 个结点的深度为 $d_i$。
挑战者需要完成的任务是:在有根树上选择一些结点,在满足下述条件的情况下,最大化选择结点的权值和:
+ 我们称两个**被选择的结点**是**联通**的,当且仅当存在一条以这两个结点为端点的路径,路径上每个点都被选择。
+ 对于任意两个联通的点,我们称其属于同一个**联通块**。
+ 对于一个联通块,我们要求联通块内任意两个结点之间的深度差的绝对值,不大于给定参数 $k$。
作为挑战者,你需要在最快时间内完成这个任务。
输入格式
第一行,两个正整数 $n,k$,表示有根树的结点数,给定的参数。
第二行,$n$ 个正整数 $w_1,\dots,w_n$,表示每个结点的权值。
接下来 $n-1$ 行,每行两个整数 $u,v$,表示一条边连接的两个结点的编号。
输出格式
输出一行一个整数,表示你的答案,即选择结点的权值和的最大值。
说明/提示
对于第一组样例,我们做出如下解释:
+ 最优方案下选择的结点编号为:$\{1,3,4,5,6\}$。
对于第二组样例,我们做出如下解释
+ 最优方案下选择的结点编号为:$\{1,2,3,4,5\}$。
对于所有数据,保证有 $1\leq n\leq 10^6$,$0\leq k\leq n$,$1\leq u,v\leq n$,$0\leq w_i\leq 10^9$。
| **子任务编号** | **分值** | $n\leq$ | $k\leq$ | **特殊性质** |
|:--:|:--:|:--:|:--:|:--:|
| 1 | 10 | $1000$ | $1000$ | 无 |
| 2 | 10 | $10^5$ | $0$ | 无 |
| 3 | 10 | $10^5$ | $1$ | 无 |
| 4 | 30 | $10^5$ | $10^5$ | 有根树随机生成 |
| 5 | 40 | $10^6$ | $10^6$ | 无 |