题目描述
在X森林里,上帝创建了生命之树。
他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。
上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, …, vk, b}
使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。
在这个前提下,上帝要使得S中的点所对应的整数的和尽量大。
这个最大的和就是上帝给生命之树的评分。
经过atm的努力,他已经知道了上帝给每棵树上每个节点上的整数。
但是由于 atm 不擅长计算,他不知道怎样有效的求评分。
他需要你为他写一个程序来计算一棵树的分数。

输入
第一行一个整数 n 表示这棵树有 n 个节点。(0<n<=10^5)
第二行 n 个整数,依次表示每个节点的评分。(每个节点的评分不超过10^6)
接下来 n-1 行,每行 2 个整数 u, v,表示存在一条 u 到 v 的边。
由于这是一棵树,所以是不存在环的。
输出
输出一行一个数,表示上帝给这棵树的分数。
样例输入
5
1 -2 -3 4 5
4 2
3 1
1 2
2 5
样例输出
8

解题思路:
https://blog.csdn.net/CrazyMooo/article/details/109080562

代码如下:

#include <iostream>
#include <vector>
using namespace std;
typedef long long LL;
const int N = 100010;
LL w[N];
LL ans;//开LL,不然会爆
vector<LL>T[N];void dfs(LL root, LL fa) {for (int i = 0; i < T[root].size(); i++) {int child = T[root][i];if (child == fa)continue;dfs(child, root);if (w[child] > 0)w[root] += w[child];}ans = max(ans, w[root]);
}int main() {int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> w[i];}for (int i = 1; i <= n - 1; i++) {int a, b;cin >> a >> b;T[a].push_back(b);T[b].push_back(a);}dfs(1, -1);cout << ans << endl;return 0;
}

[蓝桥杯2015初赛]生命之树-求树的最大子树权值和相关推荐

  1. 蓝桥杯2015初赛生命之树 DFS图解

    大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 蓝桥杯2015初赛生命之树

  2. 洛谷 P1122 最大子树和-求树的最大子树权值和

    输入: 7 -1 -1 -1 1 1 1 0 1 4 2 5 3 6 4 7 5 7 6 7 输出: 3 代码如下: #include <iostream> #include <ve ...

  3. [蓝桥杯2015初赛]垒骰子

    [蓝桥杯2015初赛]垒骰子 [蓝桥杯2015初赛]垒骰子 题目大意: 给你n个骰子,给你m组不能贴在一起的面,问你把这n个骰子垒成高度为n的柱体,一共有多少种方案? 题目分析: 首先,不能贴近的面是 ...

  4. [蓝桥杯2015初赛]移动距离

    题目描述 X星球居民小区的楼房全是一样的,并且按矩阵样式排列. 其楼房的编号为1,2,3- 当排满一行时,从下一行相邻的楼往反方向排号. 比如:当小区排号宽度为6时,开始情形如下: 1 2 3 4 5 ...

  5. [蓝桥杯2019初赛]数列求值-模拟+数论

    题目描述 给定数列1, 1, 1, 3, 5, 9, 17, -,从第4 项开始,每项都是前3 项的和.求 第20190324 项的最后4 位数字. 代码如下: #include <iostre ...

  6. 蓝桥杯2015初赛-加法变乘法-枚举

    题目描述 我们都知道:1+2+3+ - + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+-+1011+12+-+2728+29+-+49 = ...

  7. 蓝桥杯2015初赛-星系炸弹-日期计算

    题目描述 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸. 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2 ...

  8. 蓝桥杯2015初赛-方程整数解-枚举

    题目描述 方程: a^2 + b^2 + c^2 = 1000 这个方程有正整数解吗?有:a,b,c=6,8,30 就是一组解. 求出 a^2 + b^2 + c^2 = n(1<=n<= ...

  9. 1251: [蓝桥杯2015初赛]星系炸弹

    时间限制: 1 Sec 内存限制: 256 MB 题目链接:http://oj.ecustacm.cn/problem.php?id=1251 题目描述 在X星系的广袤空间中漂浮着许多X星人造&quo ...

最新文章

  1. mysql图形化及命令行操作用户权限
  2. arcgis里python窗口运行,在 Python 窗口中执行工具
  3. 华为实施微服务架构的五大军规
  4. 芒果TV 2021 互联网人才招聘
  5. php simpletest 测试数据库,在PHP中使用SimpleTest进行单元测试
  6. Notepad++快捷键使用技巧
  7. Android软键盘调用及隐藏,以及获得点击软键盘输入的字母信息
  8. Spring cloud技术栈
  9. java的多态性学习代码
  10. mysql5.7.13_mysql5.7.13.zip安装(windows)
  11. linux aspnet服务器,在Linux中安装ASPNET.Core3.0运行时的示例代码
  12. IntelliJ IDEA for Mac工件包(artifact)中 Web facet resources 的模块名称有误,如何修改?
  13. 数据结构-栈4-栈的应用-中缀转后缀
  14. ExtAspNet发展规划
  15. matlab上机操作作业指导书,LED自动固晶基本操作1
  16. python爬虫哪个选择器好用_Python爬虫学习8-css选择器使用
  17. IPFS占据10%存储份额?预测FIL价格千U?现在挖FIL晚吗?
  18. 苹果应用上架被拒各种原因
  19. Nginx优化与防盗链
  20. 基于pyqt5 构建弹窗进度条,在大型计算中实时显示进度

热门文章

  1. Android之glide加载图片圆角效果
  2. linux c之判断字符串是不是以另一字符串开始或者结尾
  3. Android安全与逆向之Java虚拟机和Dalvik虚拟机的区别
  4. 栈与队列之用java实现队列
  5. Android之Universal-Image-loader
  6. 你知道出现“乱码”的原因是什么吗?(4)
  7. oracle 事务_从Oracle到PG-PostgreSQL的MVCC机制简介
  8. php session缓存,扫盲:php session缓存至memcached中的方法
  9. 5.7.21mysql数据库_【数据库】mysql5.7.21 winx64安装配置图文分享
  10. 字符用_连接的是什么加密_防水连接器外壳与铜针表面涂层有什么用?