#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int long long
vector<vector<int>> g;
vector<pair<int, int>> v;
void dfs(int k, int p){
    for(int y = 0; y < g[k].size(); y++){
        dfs(g[k][y], k);
    }
    if(p == -1) return;
    if(v[p].first == 0){
        v[p].first += max(v[k].first, v[k].second)*2;
    }else{
        v[p].second += max(v[k].first, v[k].second)*2;
    }
}
main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n; cin >> n;
    g.resize(n+1);
    v.resize(n+1);
    vector<int> b(n+1); 
    for(int i = 1; i <= n; i++){
        int a, b; cin >> a >> b;
        if(a > 0){
            g[i].push_back(a);
        }else{
            v[i].first = abs(a);
        }
        if(b > 0){
            g[i].push_back(b);
        }else{
            v[i].second = abs(b);
        }
    }
    dfs(1, -1);
    int j = max(v[1].first, v[1].second)*2;
    string ns = "";
    while(j > 0){
        if(j%2 == 1){
            ns += '1';
        }else{
            ns += '0';
        }
        j/=2;
    }
    reverse(ns.begin(), ns.end());
    cout << ns << "\n";
    return 0;
}
Compilation message (stderr)
poklon.cpp:21:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   21 | main(){
      | ^~~~| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |