fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. vector<vector<int>> vec;
  4. int ile[1000007];
  5. int wart[1000007];
  6. int ile_ma(int x)
  7. {
  8. int c=vec[x].size();
  9. if(ile[x]>0)
  10. {
  11. return ile[x];
  12. }
  13. if(c==0)
  14. {
  15. ile[x]=wart[x];
  16. return 1;
  17. }
  18. int wyn=wart[x];
  19. for(auto a:vec[x])
  20. {
  21. wyn+=ile_ma(a);
  22. }
  23. ile[x]=wyn;
  24. return wyn;
  25. }
  26. int main()
  27. {
  28. ios_base::sync_with_stdio(0);
  29. cin.tie(0);
  30. int n;cin>>n;
  31. if(n==1)
  32. {
  33. cout<<0;
  34. return 0;
  35. }
  36. for(int i=0;i<n;i++)
  37. {
  38. vector<int> a;vec.push_back(a);
  39. }
  40. for(int i=2;i<=n;i++)
  41. {
  42. int a,b;cin>>a>>b;
  43. vec[a].push_back(i);
  44. wart[i]=b;
  45. }
  46. cout<<ile_ma(1);
  47. for(int i=1;i<=n;i++)
  48. {
  49. cout<<ile[i]<<endl;
  50. }
  51. }
  52.  
Success #stdin #stdout 0.01s 5316KB
stdin
6
4 4
1 10
1 1
1 3
2 1
stdout
88
5
10
6
3
1