题目
问题描述
有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?
输入格式
第一行包含一个整数 n 。
接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。
接下来一共 n-1 行,每行描述树上的一条边。
输出格式
输出一个整数,代表选出的点的权值和的最大值。
样例输入
5
1 2 3 4 5
1 2
1 3
2 4
2 5
样例输出
12
样例说明
选择3、4、5号点,权值和为 3+4+5 = 12 。
数据规模与约定
对于20%的数据, n <= 20。
对于50%的数据, n <= 1000。
对于100%的数据, n <= 100000。
权值均为不超过1000的正整数。
题目分析
首先,回顾一下 数据结构中 “节点”的定义:
是数据结构中,用来描述“树”型结构的名词。这种结构像一根倒着的树。每片树叶都长在一个结点上,这个结点就叫做这个叶子的父结点,这个叶子叫做父结点的子结点,也叫这棵树的叶结点,它再没有子结点了。
经过对问题的分析,发现,需要用到的思想如下:
1、动态规划的策略进行求解。因为符合 每 个 阶 段 的 决 策 , 做 出 的 是 一 组 局 部 的 决 策 结 果 , 而 每 个 阶 段 都 使 问 题 规 模 变 小 , 且 更 接 近 最 优 解 \color{green}{每个阶段的决策,做出的是一组局部的决策结果,而每个阶段都使问题规模变小,且更接近最优解} 每个阶段的决策,做出的是一组局部的决策结果,而每个阶段都使问题规模变小,且更接近最优解
2、构造树----这是一个树形结构,但不是二叉树(题目中的情况表明可以是多叉数),所以 可 以 理 解 为 一 个 图 , 那 么 对 它 的 信 息 进 行 存 储 应 该 用 图 的 存 储