#include<bits/stdc++.h>
using namespace std;
int solve(int n,int m,vector<int> f,vector<vector<int>> s){
    vector<vector<int>> child(n);
    for(int i=0;i<n;i++){
        if(f[i]!=-1) child[f[i]].push_back(i);
    }
    map<int,int> ind;
    //m=1
    int a[n-1];
    for(int i=0;i<n;i++) a[i]=s[0][i];
    for(int i=0;i<n-1;i++) ind[a[i]]=i;
    int ans=0;
    for(int i=0;i<n-1;i++){
        ans++;
        int node=a[i];
        int new_i=i;
        for(auto u:child[node]){
            new_i=max(new_i,ind[u]);
        }
        i=new_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... |