Advertisement
Kryukov_And

Untitled

Dec 11th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. struct sp
  6. {
  7.     int k;
  8.     int l;
  9.     int r;
  10.     int b;
  11.     int h;
  12.     int pr;
  13. };
  14.  
  15. int n, k = 0, i, m, mh = 200000;
  16. sp a[200010];
  17.  
  18. void dfs(int ind);
  19.  
  20. int main()
  21. {
  22.     ifstream in("balance.in");
  23.     ofstream out("balance.out");
  24.  
  25.     in >> n;
  26.     for(i = 0; i < n; i++)
  27.     {
  28.         in >> a[i].k >> a[i].l >> a[i].r;
  29.         if(a[i].l)
  30.             a[a[i].l - 1].pr = i;
  31.         if(a[i].r)
  32.             a[a[i].r - 1].pr = i;
  33.     }
  34.  
  35.     for(i = 0; i < n; i++)
  36.     {
  37.         a[a[i].l - 1].b = 1;
  38.         a[a[i].r - 1].b = 1;
  39.     }
  40.  
  41.     for(i = 0; i < n; i++)
  42.         if(!a[i].b)
  43.         {
  44.             dfs(i);
  45.             break;
  46.         }
  47.     for(i = 0; i < n; i++)
  48.         a[i].h++;
  49.  
  50.     for(i = 0; i < n; i++)
  51.         out << a[a[i].r - 1].h - a[a[i].l - 1].h << endl;
  52.  
  53.     return 0;
  54. }
  55.  
  56. void dfs(int ind)
  57. {
  58.     if (a[ind].l)
  59.         dfs(a[ind].l - 1);
  60.  
  61.     if (a[ind].r)
  62.         dfs(a[ind].r - 1);
  63.  
  64.     a[a[ind].pr].h = max(a[a[ind].pr].h, a[ind].h + 1);
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement