#include <bits/stdc++.h>
using namespace std;
const int mxN = 1e5+1000;
vector<int> adj[mxN];
int mx[mxN];
void dfs(int u=0){
for(auto it:adj[u]){
dfs(it);
mx[u]=max(mx[u],mx[it]);
}
}
int solve(int N,int M,vector<int> F,vector<vector<int>> S){
for(int i=0;i<=N;++i) adj[i].clear(),mx[i]=0;
for(int i=1;i<N;++i) adj[F[i]].push_back(i);
for(int i=0;i<M;++i){
for(int j=0;j<N-1;++j){
mx[S[i][j]]=max(mx[S[i][j]],j);
}
}
dfs();
int ans=0,curr=0;
for(int i=0;i<N-1;++i){
if(i==curr) ++ans;
curr=max(curr,mx[S[0][i]]+1);
}
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... |