【树形DP】hdu 1520 Anniversary party
2014-05-23 16:51
531 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1520
题意:一个boss想举办一个party,但他希望一个人的直属上司在场的话,那这个人就不来参加party(同样,这个人来的话,他的直属上司就不能来),求最多有多少人可以参加party?
题意:一个boss想举办一个party,但他希望一个人的直属上司在场的话,那这个人就不来参加party(同样,这个人来的话,他的直属上司就不能来),求最多有多少人可以参加party?
#include <iostream> #include <cstdio> #include <cstring> #include <vector> using namespace std; const int NM=6005; int dp[NM][2],f[NM],a[NM]; vector<int>v[NM]; int max(int x,int y){ return x>y?x:y; } void DFS(int s){ int i; dp[s][1]=a[s]; for(i=0;i<v[s].size();i++){ DFS(v[s][i]); } for(i=0;i<v[s].size();i++){ // dp[s][0]+=max(dp[v[s][i]][0],dp[v[s][i]][1]); dp[s][1]+=dp[v[s][i]][0]; } } int main() { int i,n,u,L,K; while(~scanf("%d",&n)){ for(i=1;i<=n;i++){ scanf("%d",&a[i]); v[i].clear(); } memset(f,0,sizeof(f)); memset(dp,0,sizeof(dp)); while(scanf("%d%d",&L,&K)){ if(L==0 && K==0) break; f[L]=K; v[K].push_back(L); } for(i=1;i<=n;i++){ if(!f[i]){ u=i;break; } } DFS(u); printf("%d\n",max(dp[u][0],dp[u][1])); } return 0; }
相关文章推荐
- HDU 1520 Anniversary party (简单树形DP)
- HDU 1520 Anniversary party(简单树形DP)
- hdu1520 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 Anniversary party(树形DP入门)
- hdu 1520 Anniversary party(树形dp)
- HDU 1520 Anniversary party 树形DP
- HDU 1520 Anniversary party(树形DP)
- poj2342|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) 解题报告
- HDU 1520 Anniversary party 树形DP
- hdu 1520 Anniversary party(基本树形DP)