题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520

思路:dp[u][0]表示不取u的最大价值,dp[u][1]表示取u的最大价值,于是有dp[u][0]+=max(dp[v][0],dp[v][1]),dp[u][1]+=dp[v][0](其中v是u的孩子)。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
#define MAXN 6060 int dp[MAXN][];
int n,ans;
vector<vector<int> >G; void dfs(int u,int father)
{
for(int i=;i<G[u].size();i++){
int v=G[u][i];
if(v==father)continue;
dfs(v,u);
dp[u][]+=max(dp[v][],dp[v][]);
dp[u][]+=dp[v][];
}
} int main()
{
int u,v;
while(~scanf("%d",&n)){
G.clear();
G.resize(n+);
memset(dp,,sizeof(dp));
for(int i=;i<=n;i++){
scanf("%d",&dp[i][]);
}
while(~scanf("%d%d",&u,&v)){
if(u==&&v==)break;
G[u].push_back(v);
G[v].push_back(u);
}
dfs(,-);
printf("%d\n",max(dp[][],dp[][]));
}
return ;
}

最新文章

  1. Spark Streaming架构设计和运行机制总结
  2. Ajax参数详解
  3. php+jquery+ajax实现用户名验证
  4. 【CodeVS】1993草地排水
  5. MATLAB学习笔记(二)&mdash;&mdash;主要是MATLAB的矩阵知识
  6. Android视录视频示例
  7. JS中删除字符串中的空格
  8. 从string.size()和string.length()聊到长度的问题和一个关于数据结构定义的技巧
  9. Android 获取系统或SDCARD剩余空间信息(转)
  10. ubuntu修改系统环境变量文件导致起不来
  11. &amp;和&amp;&amp;的共同点和区别、Java字符含义和Java创建对象的几种方式
  12. JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
  13. ArcGIS 添加 MarkerSymbol 弹出“图形符号无法序列化为 JSON”错误
  14. linux crontab详解 php开发相关
  15. MaximumClique HDU1530
  16. NXP ARM Vector Table CheckSum
  17. Phpstorm 无法自动断点 Exception
  18. ibatis中:org.springframework.jdbc.UncategorizedSQLException:异常
  19. caffe学习3——layers
  20. C++语言基础(9)-继承

热门文章

  1. Appium完整安装教程
  2. 中文latex去掉图片描述
  3. 【算法剖析】寻找两个已序数组中的第k大元素
  4. [HNOI2002]营业额统计 Splay tree
  5. blender, merge顶点
  6. Atitit.软件仪表盘(0)--软件的子系统体系说明
  7. 每日英语:The First Day On A Job Is Tough Work
  8. [转]ISTQB FL初级认证考试资料(中文)
  9. Android 开发之Android 应用程序如何调用支付宝接口
  10. gdb,程序调试助手