#include "september.h"
#include <algorithm>
#include <utility>
#include <vector>
using namespace std;
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
vector<int> allowed (N-1, 1);
vector<int> occurrences (N, 0);
int bad = 0;
for (int i=0; i<(N-1); i++)
{
for (int j=0; j<M; j++)
{
occurrences[S[j][i]]++;
if (occurrences[S[j][i]] == 1)
bad++;
if (occurrences[S[j][i]] == M)
bad--;
}
if (bad>0)
allowed[i]=0;
}
vector< vector<int> > children (N);
for (int i=1; i<N; i++)
{
children[F[i]].push_back(i);
}
vector<int> visited (N, 0);
//0 unvisited
//1 visited
//2 visited my parent
int count2 = 0;
int answer = 0;
for (int i=0; i<(N-1); i++)
{
int curr = S[0][i];
if (visited[curr]==2)
count2--;
visited[curr]=1;
for (int j: children[curr])
if (visited[j]!=1)
{
visited[j]=2;
count2++;
}
if ((count2==0) and (allowed[i]==1))
answer++;
}
return answer;
}
# | 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... |