Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- struct sp
- {
- int k;
- int l;
- int r;
- int b;
- int h;
- int pr;
- };
- int n, k = 0, i, m, mh = 200000;
- sp a[200010];
- void dfs(int ind);
- int main()
- {
- ifstream in("balance.in");
- ofstream out("balance.out");
- in >> n;
- for(i = 0; i < n; i++)
- {
- in >> a[i].k >> a[i].l >> a[i].r;
- if(a[i].l)
- a[a[i].l - 1].pr = i;
- if(a[i].r)
- a[a[i].r - 1].pr = i;
- }
- for(i = 0; i < n; i++)
- {
- a[a[i].l - 1].b = 1;
- a[a[i].r - 1].b = 1;
- }
- for(i = 0; i < n; i++)
- if(!a[i].b)
- {
- dfs(i);
- break;
- }
- for(i = 0; i < n; i++)
- a[i].h++;
- for(i = 0; i < n; i++)
- out << a[a[i].r - 1].h - a[a[i].l - 1].h << endl;
- return 0;
- }
- void dfs(int ind)
- {
- if (a[ind].l)
- dfs(a[ind].l - 1);
- if (a[ind].r)
- dfs(a[ind].r - 1);
- a[a[ind].pr].h = max(a[a[ind].pr].h, a[ind].h + 1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement