#include "september.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 11;
const int INF = INT_MAX;
vector < int > adj[N];
int dep[N] , sub[N] , idx[N] , po = 0;
void dfs(int v , int p)
{
idx[v] = ++po;
sub[v] = 1;
for(int u : adj[v]){
if(u == p) continue;
dep[u] = dep[v] + 1;
dfs(u , v);
sub[v] += sub[u];
}
}
void get_dep(int n , int m , vector < int > F)
{
for(int i = 1;i <= n - 1;i++)
{
adj[F[i]].push_back(i);
adj[i].push_back(F[i]);
}
dfs(0 , -1);
}
void fix()
{
po = 0;
for(int i = 0;i < N;i++) dep[i] = idx[i] = sub[i] = 0 , adj[i].clear();
}
bool is_anc(int u , int v)
{
if(idx[v] >= idx[u] && idx[v] <= idx[u] + sub[u] - 1) return true;
return false;
}
int solve(int n , int m , vector < int > F , vector < vector < int > > S)
{
get_dep(n , m , F);
vector < int > A;
for(int i = 0;i < n - 1;i++) A.push_back(S[0][i]);
int res = 0;
for(int i = 0;i < n - 1;i++)
{
bool can = 1;
for(int j = i + 1;j < n - 1;j++)
{
if(is_anc(A[i] , A[j]) && dep[A[j]] > dep[A[i]]) can = 0;
}
res += can;
}
return res;
}
# | 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... |