[poj 2342]简单树dp
2024-10-20 15:52:34
题目链接:http://poj.org/problem?id=2342
dp[i][0/1]表示以i为根的子树,选或不选根,所能得到的最大rating和。
显然
dp[i][0]=∑max(dp[son][0],dp[son][1])
dp[i][1]=val[i]+∑dp[son][0]
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std; const int maxn=;
int v[maxn];
int p[maxn];
vector<int> G[maxn];
int dp[maxn][]; void dfs(int u)
{
dp[u][]=;
dp[u][]=v[u];
for (int i=;i<G[u].size();i++)
{
dfs(G[u][i]);
dp[u][]+=max(dp[G[u][i]][],dp[G[u][i]][]);
dp[u][]+=dp[G[u][i]][];
}
} int main()
{
int n;
while (scanf("%d",&n) && n)
{
memset(p,-,sizeof(p));
for (int i=;i<=n;i++) G[i].clear();
for (int i=;i<=n;i++) scanf("%d",&v[i]);
for (int i=;i<=n-;i++)
{
int u,fa;
scanf("%d%d",&u,&fa);
p[u]=fa;
G[fa].push_back(u);
}
int root;
for (int i=;i<=n;i++) if (p[i]==-) root=i;
dfs(root);
printf("%d\n",max(dp[root][],dp[root][]));
}
return ;
}
最新文章
- GOLANG 常用命令
- Javascript参考手册
- 如何把项目部署到OSChina上
- [转]silverlight Datagrid 行上增加ToolTip
- Effective Java 11 Override clone judiciously
- 【poj1113】 Wall
- protected 和default的区别
- Dapper.NET - ORM(ibatis.Net)
- Qt 学习之路 :使用 QJson 处理 JSON
- 图论(差分约束系统):POJ 1201 Intervals
- Python 单词字母顺序不变且所有倒排
- 【Linux CentOS 在虚拟机中XShell出现: (port 22): Connection failed.】
- CodeForces 132C Logo Turtle (记忆化搜索)
- 在 Visual C++ 中开发自定义的绘图控件
- PS中如何把图片颜色加到字体上去
- IOS端 margin-top 和 margin-bottom 使用负数时的区别
- A - Arcade Game Gym - 100814A (概率思维题)
- python 爬虫系列教程方法总结及推荐
- 6.关于Xamarin Android对APK包大小的处理
- /usr/bin/curl: Argument list too long的解决方法
热门文章
- DHT11资料
- 完全数--Python
- CERC2017 Gambling Guide,最短路变形,期望dp
- 异步消息处理(Message, Handler, MessageQueue, Looper)
- Altium Designer -- 精心总结
- Hibernate-ORM:09.Hibernate中的getCurrentSession()
- hdu4742 Pinball Game 3D
- Delphi7目录结构----初学者参考
- 自动化测试(一)-get和post的简单应用
- java 读取配置文件 与更新