#include <bits/stdc++.h>
using namespace std;
void dfs(vector <vector<int>>& child,vector<int>& maxpos, int u){
for (int i=0; i<child[u].size(); i++){
dfs(child,maxpos,child[u][i]);
maxpos[u]=max(maxpos[u],maxpos[child[u][i]]);
}
}
int solve(int n, int m, vector<int> v1,vector<vector<int>> v2){
vector <int> maxpos(n);
vector <vector<int>> child(n);
for (int i=1; i<n; i++){
child[v1[i]].push_back(i);
}
for (int j=0; j<m; j++){
for (int i=0; i<n-1; i++){
maxpos[v2[j][i]]=max(maxpos[v2[j][i]],i);
}}
dfs(child,maxpos,0);
int ans=0;
int cur=-1;
for (int i=0; i<n-1; i++){
if (cur<i){ans++;}
for (int j=0; j<m; j++){
cur=max(cur,maxpos[v2[j][i]]);
}}
/*
for (int i=0; i<n; i++){
cout<<maxpos[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... |