POJ 2342 树形DP入门水题
2017-04-10 20:58
417 查看
题意
N个人,每个人有一个参加宴会的开心值,每个人不能和他的上级同时参加宴会。问参加宴会的人员开心值总和最大是多少?题解
最基础的树形DP,对于一个人有两种状态,dp[m][0]代表不参加宴会,则dp[m][0]+=max(dp[m][1],dp[m][0])。dp[m][1]代表参加宴会,因此其子节点就不能参加宴会,dp[m][1]+=dp[m][0]。代码
#include <iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int dp[6010][2]; int p[6010]; bool vis[6010]; int n; void dfs(int m){ vis[m]=true; for(int i=1;i<=n;i++){ if(!vis[i]&&p[i]==m){ dfs(i); dp[m][0]+=max(dp[i][1],dp[i][0]); dp[m][1]+=dp[i][0]; } } } int main() { while(~scanf("%d",&n)){ memset(dp,0,sizeof(dp)); memset(p,0,sizeof(p)); memset(vis,false,sizeof(vis)); for(int i=1;i<=n;i++){ scanf("%d",&dp[i][1]); } int n,m; while(scanf("%d%d",&n,&m)){ if(n+m==0) break; p =m; } dfs(0); printf("%d\n",max(dp[0][1],dp[0][0])); } return 0; }
相关文章推荐
- POJ 2342 (树形dp入门)
- poj 2342 anniversary party(树形dp入门)
- poj 2342 Anniversary party 树形dp入门
- poj 2342 树形dp入门
- poj-2342 Anniversary party(树形DP入门)
- POJ 2342 树形DP入门题
- HDU 1520 & POJ 2342 Anniversary party(树形DP入门题)
- [ACM] POJ 2342 Anniversary party (树形DP入门题)
- poj 2342 Anniversary party (树形dp入门)
- [ACM] POJ 2342 Anniversary party (树形DP入门题)
- poj 2342 Anniversary party (树形dp入门)
- poj 2342 Anniversary party 树形dp入门
- POJ 2342 Anniversary party (最基础树形DP入门)
- [树形dp][入门]hdu1520 & poj2342 Anniversary party
- 树形dp入门(poj 2342 Anniversary party)
- 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入门题目)