#include<bits/stdc++.h>
using namespace std;
///#define a leftchild
struct node{
int a=0;
int b=0;
int parent=-1;
};
int solve(int N, int M, std::vector<int> F,
std::vector<std::vector<int>> S){
int ans=0;
vector<node> tree(N);
for(int i=1;i<=N-1;i++){
if(tree[F[i]].a==0) tree[F[i]].b=i;
else tree[F[i]].b=i;
tree[i].parent = F[i];
}
vector<set<int>> s(M);
vector<set<int>> s2(M);
for(int i=1;i<=N-1;i++){
bool condition = true;
set<int> prev;
for(int j=0;j<M;j++){
s[j].erase(S[j][i]);
s2[j].insert(S[j][i]);
if(tree[S[j][i]].a!=0) s[j].insert(tree[S[j][i]].a);
if(tree[S[j][i]].b!=0) s[j].insert(tree[S[j][i]].b);
if(s.empty() && condition){
if(!j==0){
if(prev != s[j]) condition=false;
}
else prev = s[j];
}
}
if(condition) 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... |