#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define pb push_back
#define ff first
#define ss second
vector<int> beechtree(int n, int m, vector<int> p, vector<int> c){
    vector<int> g[n];
    for (int i = 1; i < n; i++) g[p[i]].pb(i);
    
    vector<int> all[n];
    function<void(int, int)> dfs = [&](int v, int d){
        all[d].pb(v);
        for (int i: g[v]){
            if (i != p[v]){
                dfs(i, d + 1);
            }
        }
    };
    
    vector<int> out;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++) all[j].clear();
        dfs(i, 0);
        
        vector<int> o, cc(m + 1);
        bool I = 1;
        for (int d = 0; d < n; d++){
            for (int y: all[d]){
                o.pb(y);
            }
        }
        
        for (int j = 1; j < o.size(); j++){
            if (o[cc[c[o[j]]]] != p[o[j]]){
                I = 0;
                break;
            }
            cc[c[o[j]]]++;
        }
        
        out.pb(I);
    }
    
    return out;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |