hdu 1520 Anniversary party
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 1520 Anniversary party相关的知识,希望对你有一定的参考价值。
没有上司的舞会
树形dp
#include <cstring> #include <vector> #include <cstdio> #define N 6005 using namespace std; vector<int>G[N]; bool flag[N]; int dp[N][2],n,r[N],root; inline int max(int a,int b) {return a>b?a:b;} void dfs(int x,int pre) { dp[x][1]=r[x]; for(int i=0;i<G[x].size();++i) { int v=G[x][i]; if(v==pre) continue; dfs(v,x); dp[x][0]+=max(dp[v][0],dp[v][1]); dp[x][1]+=dp[v][0]; } } int Main() { for(;scanf("%d",&n)!=EOF;) { for(int i=1;i<=n;++i) G[i].clear(); memset(dp,0,sizeof(dp)); memset(flag,0,sizeof(flag)); for(int i=1;i<=n;++i) scanf("%d",&r[i]); int x,y; scanf("%d%d",&x,&y); for(;x&&y;) { G[y].push_back(x); flag[x]=1; scanf("%d%d",&x,&y); } for(int i=1;i<=n;++i) if(!flag[i]) root=i; dfs(root,root); printf("%d\\n",max(dp[root][0],dp[root][1])); } return 0; } int sb=Main(); int main(int argc,char *argv[]){;}
以上是关于hdu 1520 Anniversary party的主要内容,如果未能解决你的问题,请参考以下文章
HDU-1520 Anniversary party (树形DP)
HDU - 1520 Anniversary party (有向入门树形DP)
HDU1520 Anniversary party 树形DP基础