#include <bits/stdc++.h>
using namespace std;
int solve(int N, int M, vector<int> F, vector<vector<int>> S){
vector<vector<int>> children(N, vector<int>());
for (int i = 1; i < F.size(); i++){
children[F[i]].push_back(i);
}
int ans = 0;
int diffs = 0;
int minleaf = 0;
vector<int> cnts(N, 0);
vector<bool> visited(N, false);
for (int i = 0; i < N-1; i++){
for (auto x : S){
int node = x[i];
if (!visited[node]){
queue<int> q;
q.push(node);
visited[node] = true;
minleaf++;
while (q.size()){
int newnode = q.front(); q.pop();
for (auto y : children[newnode]){
if (!visited[y]){
minleaf++;
visited[y] = true;
q.push(y);
}
}
}
}
cnts[node]++;
if (cnts[node] == 1){
diffs++;
}
if (cnts[node] == M){
diffs--;
}
}
if (i >= minleaf-1 && diffs == 0)
ans++;
}
return ans;
}
# | 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... |