#include "beechtree.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> dfs(vector<vector<int>> &children, vector<int> &P, vector<int> &C, vector<int> &res, int cur) {
vector<int> nodes = {cur};
for (auto &i : children[cur]) {
auto v = dfs(children, P, C, res, i);
for (auto &n : v) nodes.push_back(n);
}
sort(nodes.begin() + 1, nodes.end());
do {
map<int, int> cnts;
bool ok = true;
for (int i = 1; i < nodes.size(); ++i) {
if (nodes[cnts[C[nodes[i]]]] != P[nodes[i]]) {
ok = false;
break;
}
++cnts[C[nodes[i]]];
}
if (ok) {
res[cur] = 1;
return nodes;
}
} while (next_permutation(nodes.begin() + 1, nodes.end()));
return nodes;
}
std::vector<int> beechtree(int N, int M, std::vector<int> P, std::vector<int> C)
{
// vector<vector<int>> children(N);
// for (int i = 1; i < N; ++i) children[P[i]].push_back(i);
vector<int> res(N, 0);
// dfs(children, P, C, res, 0);
res[N - 1] = res[N - 2] = 1;
for (int i = N - 3; i >= 0; --i) {
if (C[i + 1] != C[i + 2]) break;
res[i] = 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... |