제출 #1355429

#제출 시각아이디문제언어결과실행 시간메모리
1355429Francisco_MartinSeptember (APIO24_september)C++20
100 / 100
85 ms15960 KiB
//APIO 2024 September
//https://qoj.ac/contest/1684/problem/8724

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector<ll>;
const ll MAXN = 1e5+5;

vll g[MAXN];
void dfs(ll v,vll &R){
    for(auto u:g[v])  dfs(u,R), R[v]=max(R[v],R[u]);
}

int solve(int n,int m,vector<int> F,vector<vector<int>> S){
    for(int i=0; i<n; i++) g[i].clear();
    for(int i=1; i<n; i++) g[F[i]].push_back(i);
    vll R(n,-1); ll r=0, ans=0;
    for(int i=0; i<m; i++) for(int j=0; j<n-1; j++) R[S[i][j]]=max(R[S[i][j]],(ll)j);
    dfs(0,R);
    for(int j=0; j<n-1; j++){
        for(int i=0; i<m; i++) r=max(r,R[S[i][j]]);
        if(j==r) ans++;
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...