#include "beechtree.h"
#include <bits/stdc++.h>
using namespace std;
std::vector<int> beechtree(int N, int M, std::vector<int> P, std::vector<int> C)
{
    vector<int> res(N);
    vector<vector<int>> adj(N);
    for (int i = 1; i < N; ++i) {
        adj[P[i]].push_back(i);
    }
    auto dfs = [&](auto& dfs, int i, int p) -> vector<int> {
        vector<int> vert;
        for (auto& u : adj[i]) {
            if (u == p) continue;
            for (auto j : dfs(dfs, u, i)) {
                vert.push_back(j);
            }
        }
        auto seq = vert;
        sort(begin(seq), end(seq));
        // cerr << i << " = ";
        // for (auto& u : seq) {
        //     cerr << u << " ";
        // }
        // cerr << "\n";
        do {
            vector<int> now = seq;
            now.insert(now.begin(), i);
            map<int, int> cnt;
            bool ok = true;
            for (auto& j : seq) {
                if (now[cnt[C[j]]] != P[j]) {
                    ok = false;
                    break;
                }
                cnt[C[j]] += 1;
            }
            if (ok) {
                res[i] = 1;
                break;
            }
        } while (next_permutation(begin(seq), end(seq)));
        vert.push_back(i);
        return vert;
    };
    dfs(dfs, 0, -1);
    return res;
}
| # | 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... |