#include "september.h"
#include <bits/stdc++.h>
using namespace std;
int solve(int n, int m, vector<int>par, vector<vector<int>>obs) {
for(int i = 0;i<m;i++){
obs[i].push_back(0);
}
vector<bool>to_check(n,false);
set<int>st;
for(int i = 0;i<n-1;i++){
for(int j = 0;j<m;j++){
st.insert(obs[j][i]);
}
bool yes = true;
to_check[i] = (st.size()==i+1);
}
// solving for m = 1
vector<bool>in_stack(n,false);
vector<int>to_take(n);
for(int i = 1;i<n;i++){
to_take[par[i]]++;
}
vector<bool>is_fine(n,false);
vector<int>vec = obs[0];
int stack_size = 0;
for(int i = 0;i<n-1;i++){
int u = vec[i];
in_stack[u] = true;
stack_size++;
if(to_take[u]==0){
stack_size--; in_stack[u] = false;
if(par[u]!=-1){
to_take[par[u]]--;
if(to_take[par[u]]==0 and in_stack[par[u]]){
stack_size--;
in_stack[par[u]] = false;
}
}
}
else{
if(par[u]!=-1){
to_take[par[u]]--;
if(to_take[par[u]]==0 and in_stack[par[u]]){
stack_size--;
in_stack[par[u]] = false;
}
}
}
if(stack_size==0){
is_fine[i] = true;
}
}
int ans = 0;
for(int i = 0;i<n-1;i++){
ans += (to_check[i]&&is_fine[i]);
}
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... |