POJ-2342 Anniversary party(Tree dp)
来源:互联网 发布:ubuntu wily 源 编辑:程序博客网 时间:2024/06/15 02:01
最基础的Tree dp
dp[i][0]表示编号为i的结点不去,dp[i][1]表示编号为i的结点去。
转移方程为dp[i][0] += max(dp[son[i]][0],dp[son[i]][1]);
dp[i][1] += dp[son[i]][0];
#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <string.h>const int MAXN = 6005;int n;int dp[MAXN][2],fa[MAXN];bool vis[MAXN];inline int max(int a,int b){ return a<b ? b : a; }void dfs(int root){ vis[root] = 1; for(int i = 1;i <= n;i++) { if(!vis[i]&&fa[i]==root) { dfs(i); dp[root][1] += dp[i][0]; dp[root][0] += max(dp[i][0],dp[i][1]); } }}int main(){ while(scanf("%d",&n) != EOF) { memset(dp,0,sizeof(dp)); memset(vis,0,sizeof(vis)); memset(fa,0,sizeof(fa)); for(int i = 1;i <= n;i++) scanf("%d",&dp[i][1]); bool beg = 1; int root = 0,l,k; while(scanf("%d%d",&l,&k) == 2 && l+k>0){ fa[l] = k; if(root==l||beg) { root = k; beg = 0; } } dfs(root); printf("%d\n",max(dp[root][0],dp[root][1])); //Free(n); }}
- POJ-2342 Anniversary party(Tree dp)
- POJ 2342 Anniversary party ~~Tree Dp
- poj 2342 Anniversary party 简单的DP
- poj 2342 Anniversary party 树形DP
- poj 2342 Anniversary Party(树形dp)
- POJ 2342 Anniversary party(树形DP)
- poj 2342 Anniversary party 简单树形dp
- poj 2342 Anniversary party,树形DP easy
- POJ 2342 Anniversary Party ( 树形DP )
- poj 2342Anniversary party(树形dp)
- poj 2342 Anniversary party 简单树形dp
- POJ - 2342 Anniversary party 树形DP
- poj 2342 Anniversary party(树形dp)
- POJ-2342::Anniversary party-树形DP
- POJ 2342Anniversary party(树形DP)
- POJ 2342 Anniversary party (树形dp)
- poj 2342 Anniversary party(树形dp)
- POJ 2342 Anniversary party【树形DP】
- NEERC 2006 / UVa 1388 Graveyard (数学&想法题&找最近整数)
- Linux12samba软件包
- 在Centos下使用英伟达GPU,文本模式下发现分辨率不能修改的方法
- UVA 10494 If We Were a Child Again
- 黑马程序员————高新技术————动态代理
- POJ-2342 Anniversary party(Tree dp)
- Windows 同时安装python2 和python3,并设置不同的右键关联
- 在Ubuntu下安装配置Samba服务
- K-means学习笔记
- 黑马程序员————高新技术————JDK1.5新特性
- 一道Google笔试题--关于预编译
- windows 下adb不能找到Android设备
- spring @Autowired使用
- javascriptIE浏览器一个控件的检测过程