# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1182472 | Agageldi | September (APIO24_september) | C++20 | 0 ms | 0 KiB |
#include "bits/stdc++.h"
#include "september.h"
#include "stub.cpp"
using namespace std;
#define SZ(v) (int)v.size()
#define ll long long
#define MAX_N 5000005
ll n, vis[MAX_N], ans, ind[MAX_N], r = -1;
vector <int> v[MAX_N];
void solve(int x) {
vis[x] = 1;
r = max(r,ind[x]);
for(auto i : v[x]) {
solve(i);
v[i].clear();
}
}
int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
ans = 0;
for(int i = 0; i < N; i++) {
v[i].clear();
vis[i] = 0;
}
for(int i = 1; i < N; i++) {
v[F[i]].push_back(i);
}
for(int i = 0; i < SZ(S[0]); i++) {
ind[S[0][i]] = i;
}
for(auto i : S[0]) {
if(r == ind[i]) ans++;
if(vis[i]) continue;
solve(i);
if(r == ind[i]) ans++;
}
return ans;
}