hdu 1520 树形dp入门
2013-07-07 18:43
411 查看
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<vector> using namespace std; const int maxn = 6000+50; int dp[maxn][2]; bool vis[maxn]; struct node { int fa; vector<int> ch; }; node p[maxn]; void dfs(int cur) { vis[cur]=1; int s=p[cur].ch.size(); for(int i=0;i<s;i++) { int ch=p[cur].ch[i]; if(!vis[ch]) { dfs(ch); dp[cur][1]+=dp[ch][0]; dp[cur][0]+=max(dp[ch][1],dp[ch][0]); } } } int main() { int n,a,b,root; while(~scanf("%d",&n)) { memset(p,0,sizeof(p)); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) { scanf("%d",&dp[i][1]); dp[i][0]=0; } while(~scanf("%d%d",&a,&b)&&(a||b)) { p[a].fa=b; p[b].ch.push_back(a); } root=1; for(int i=1;i<=n;i++) { if(!p[i].fa) { root=i; break; } } dfs(root); printf("%d\n",max(dp[root][0],dp[root][1])); } return 0; }
相关文章推荐
- HDU 1520 & POJ 2342 Anniversary party(树形DP入门题)
- hdu 1520 Anniversary party(入门树形DP)
- HDU 1520 Anniversary party 树形DP入门
- HDU 1520-Anniversary party(树形dp入门)
- HDU 1520 Anniversary party 树形DP入门题
- HDU 1520 Anniversary party 树形dp 入门
- HDU 1520【树形dp入门】
- HDU - 1520 Anniversary party 树形dp入门+见解
- hdu 1520 Anniversary party 树形dp入门
- hdu 1520 树形dp入门
- HDU 1520 Anniversary party (简单树形DP入门)
- [Hdu 1520] (DP_树形DP) 入门训练
- [HDU] 1520 Anniversary party 入门树形DP
- HDU 1520 Anniversary party(树形DP入门)
- HDU-1520-Anniversary party(树形DP入门)
- Hdu 1520 Anniversary party (树形dp入门,类似最大独立集)
- HDU 1520 Anniversary party (树形DP,入门)
- hdu 1520 Anniversary party(树形DP入门)
- 树形dp入门 hdu 1520 and 2196
- hdu 1520 树形dp入门题