fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <stack>
  4. using namespace std;
  5.  
  6. int main() {
  7. cin.tie(0);
  8. ios_base::sync_with_stdio(0);
  9.  
  10. int n;
  11. cin >> n;
  12. vector<vector<int>> sub(n);
  13. for(int i = 1; i < n; i++) {
  14. int boss;
  15. cin >> boss;
  16. sub[boss - 1].push_back(i);
  17. }
  18.  
  19. stack<int> st;
  20. vector<int> order;
  21. st.push(0);
  22. while(!st.empty()){
  23. auto cur = st.top(); st.pop();
  24. order.push_back(cur);
  25. for(auto &nx: sub[cur]) {
  26. st.push(nx);
  27. }
  28. }
  29.  
  30. vector<int> ans(n);
  31. for(int i = order.size() - 1; i >= 0; i--) {
  32. int cur = order[i];
  33. for(auto &nx: sub[cur]){
  34. ans[cur] += ans[nx] + 1;
  35. }
  36. }
  37.  
  38. for(int i = 0; i < n; i++){
  39. cout << ans[i] << ' ';
  40. }
  41. cout << '\n';
  42.  
  43. return 0;
  44. }
Success #stdin #stdout 0s 5304KB
stdin
5
1 1 2 3
stdout
4 1 1 0 0