标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 5523 | Accepted: 3169 |
Description
Input
Output
Sample Input
7 1 1 1 1 1 1 1 1 3 2 3 6 4 7 4 4 5 3 5 0 0
Sample Output
5
Source
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 int n; 6 int f[6010][2],used[6010],father[6010]; 7 void treee(int num) 8 { 9 int i; 10 used[num]=1; 11 for (i=1;i<=n;i++) 12 { 13 if (!used[i] && father[i]==num) 14 { 15 treee(i); 16 f[num][1]+=f[i][0]; 17 f[num][0]+=max(f[i][1],f[i][0]); 18 } 19 } 20 } 21 int main() 22 { 23 int root,a,b,bb; 24 int i; 25 while (~scanf("%d",&n)) 26 { 27 memset(father,0,sizeof(father)); 28 memset(used,0,sizeof(used)); 29 memset(f,0,sizeof(f)); 30 for (i=1;i<=n;i++) 31 scanf("%d",&f[i][1]); 32 root=0; 33 bb=1; 34 while (scanf("%d%d",&a,&b),a||b) 35 { 36 father[a]=b; 37 if (a==root || bb==1) 38 { 39 root=b; 40 } 41 } 42 while (father[root]) 43 root=father[root]; 44 treee(root); 45 printf("%d",max(f[root][0],f[root][1])); 46 } 47 return 0; 48 }
【Poj】 p2342 Anniversary party(树形DP第一道)
标签:
原文地址:http://www.cnblogs.com/DMonster/p/4940158.html