#include "beechtree.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 7;
int n, m;
vector<int> g[N];
int col[N], ok[N], par[N];
set<int> s[N];
int sz[N], d[N];
void dfs(int u) {
    sz[u] = 1;
    for (auto v : g[u]) {
        dfs(v);
        sz[u] += sz[v];
        d[v] = s[v].size();
        s[u].insert(col[v]);
        if (s[u] < s[v]) swap(s[u], s[v]);
        for (auto x : s[v]) s[u].insert(x); 
        s[v].clear();
    }
    set<int> children;
    for (auto v : g[u]) children.insert(col[v]);
    if (children.size() == s[u].size() && g[u].size() == s[u].size()) {
        int rem = sz[u] - 1 - g[u].size();
        if (rem == 0) ok[u] = 1;
        for (auto v : g[u]) {
            if (d[v] == rem) {
                ok[u] = 1;
            } 
        }
    }
}
vector<int> beechtree(int N, int M, vector<int> P, vector<int> C) {
    n = N;
    m = M;
    for (int i = 0; i < n; ++i) {
        par[i] = P[i];
        if (i > 0) {
            g[P[i]].push_back(i);
        }
    }
    for (int i = 0; i < n; ++i) {
        col[i] = C[i];
    }
    dfs(0);
    vector<int> ret(n);
    for (int i = 0; i < n; ++i) ret[i] = ok[i];
    return ret; 
}
| # | 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... |