제출 #1332460

#제출 시각아이디문제언어결과실행 시간메모리
1332460aren_dance9월 (APIO24_september)C++20
100 / 100
149 ms21152 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e5+100;
vector<int> g[N];
vector<vector<int>> f1;
int sz[N];
void dfs(int v){
    sz[v]=0;
    for(int i=0;i<f1[v].size();++i)
    sz[v] = max(sz[v],f1[v][i]);
    for(auto i:g[v]){
        dfs(i);
        sz[v]=max(sz[v],sz[i]);
    }
}
int solve(int n, int m, std::vector<int> f,
std::vector<std::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);
    }
    f1.clear();
    f1.resize(n+1);
    for(int j=0;j<=n;++j){
        f1[j].resize(m+1);
    }
    for(int j=0;j<m;++j){
        for(int i=0;i<s[0].size();++i){
            f1[s[j][i]][j]=i;
        }
    }
    dfs(0);
    int day=0;
    int last_mx=0;
    for(int i=0;i<s[0].size();++i){
        for(int j=0;j<m;++j){
            last_mx=max(last_mx,sz[s[j][i]]);
        }
        if(last_mx==i){
            day++;
        }
    }
    return day;
}
#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...