Advertisement
a53

arbsum

a53
Feb 23rd, 2018
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <vector>
  4. #define N 100001
  5. using namespace std;
  6. int n,x,i,v[N],A[N],B[N];
  7. vector<int> V[N];
  8.  
  9. void DF(int nod)
  10. {
  11. A[nod]=0;
  12. B[nod]=v[nod];
  13. if(V[nod].size()==0)
  14. return;
  15. for(vector<int>::iterator it=V[nod].begin();it!=V[nod].end();++it)
  16. DF(*it);
  17. for(vector<int>::iterator it=V[nod].begin();it!=V[nod].end();++it)
  18. A[nod]+=max(A[*it],B[*it]),B[nod]+=A[*it];
  19. }
  20.  
  21. int main()
  22. {
  23. scanf("%d %d",&n,&x);
  24. for(i=2;i<=n;++i)
  25. scanf("%d",&x),V[x].push_back(i);
  26. for(i=1;i<=n;++i)
  27. scanf("%d",&v[i]);
  28. DF(1);
  29. printf("%d\n",max(A[1],B[1]));
  30. return 0;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement