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. if(x==1)
  24. {
  25. cout<<"cnlcna"<<endl;
  26. for(auto a:vec[x])
  27. {
  28. cout<<ile_ma(a)<<endl;
  29. }
  30. }
  31. ile[x]=wyn;
  32. return wyn;
  33. }
  34. int main()
  35. {
  36. ios_base::sync_with_stdio(0);
  37. cin.tie(0);
  38. int n;cin>>n;
  39. if(n==1)
  40. {
  41. cout<<0;
  42. return 0;
  43. }
  44. for(int i=0;i<n;i++)
  45. {
  46. vector<int> a;vec.push_back(a);
  47. }
  48. for(int i=2;i<=n;i++)
  49. {
  50. int a,b;cin>>a>>b;
  51. vec[a].push_back(i);
  52. wart[i]=b;
  53. }
  54. ile_ma(1);
  55. for(int i=1;i<=n;i++)
  56. {
  57. cout<<ile[i]<<endl;
  58. }
  59. }
  60.  
Success #stdin #stdout 0.01s 5280KB
stdin
6
4 4
1 10
1 1
1 3
2 1
stdout
cnlcna
10
6
3
8
5
10
6
3
1