#include "september.h"
#include <unordered_set>
#include <vector>
using namespace std;
#define REP(a,i,n) for (int i=a;i<n;i++)
void loadChildren(int N, vector<int> F, vector<vector<int>> &childs) {
REP(1,i,N) {
childs[F[i]].push_back(i);
}
}
void including(int parent, vector<vector<int>> &childs, vector<int> &visited, unordered_set<int> &leafed) {
visited[parent]=1;
leafed.insert(parent);
for (auto leaf : childs[parent]) {
if (!visited[leaf]) {
including(leaf, childs, visited, leafed);
}
}
}
int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
unordered_set<int> leafed;
vector<vector<int>> childs(N+1);
vector<int> freq(N+1), visited(N+1);
int K=0;
loadChildren(N, F, childs);
REP(0,i,N-1) {
REP(0, log, M) {
int leaf = S[log][i];
freq[leaf]++;
if (!visited[leaf]) {
including(leaf, childs, visited, leafed);
}
if (freq[leaf]>=M) {
leafed.erase(leaf);
}
}
if (leafed.size()==0) {
K++;
}
}
return K;
}
# | 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... |