#include "beechtree.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> beechtree(int N, int M, vector<int> P, vector<int> C) {
vector<int> ret(N);
vector<vector<int>> child(N);
for (int i = 1; i < N; i++) child[P[i]].push_back(i);
vector<int> maxdeg(N);
vector<int> have1(N), have2(N);
for (int i = N-1; i >= 0; i--) {
for (int v : child[i]) {
maxdeg[i] = max(maxdeg[i], maxdeg[v]);
have1[i] += have1[v]-(C[v] == 1);
have2[i] += have2[v]-(C[v] == 2);
}
if (maxdeg[i] >= 2 || (have1[i] > 0 && have2[i] > 0)) ret[i] = false;
else ret[i] = true;
maxdeg[i] = max(maxdeg[i], (int)child[i].size());
if (C[i] == 1) have1[i]++;
else have2[i]++;
for (int v : child[i]) {
have1[i] += (C[v] == 1);
have2[i] += (C[v] == 2);
}
}
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... |