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