# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1182475 | Agageldi | 9월 (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
int 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;
r = -1;
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(int j = 0; j < N - 1; j++) {
r = max(r,j);
for(int k = 0; k < M; k++){
solve(S[k][j]);
}
if(r == j) ans++;
}
return ans;
}