标签:
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int fa[7000]; int dp[7000][5]; int vis[7000]; int n; void dfs(int rt) { int i,j,k; vis[rt]=1; for(i=1;i<=n;i++) { if(vis[i]==0&&fa[i]==rt) { dfs(i); dp[rt][1]+=dp[i][0]; dp[rt][0]+=max(dp[i][0],dp[i][1]); } } } int main() { int i,j; int l,k; memset(vis,0,sizeof(vis)); scanf("%d",&n); for(i=1;i<=n;i++) { fa[i]=i; scanf("%d",&dp[i][1]); } while(scanf("%d%d",&l,&k),l+k) { fa[l]=k; } int rt; for(i=1;i<=n;i++) { if(fa[i]==i) rt=i; } dfs(rt); printf("%d\n",max(dp[rt][0],dp[rt][1])); return 0; }
poj 2342 Anniversary party (树形dp)
标签:
原文地址:http://www.cnblogs.com/sola1994/p/4694620.html