제출 #1299281

#제출 시각아이디문제언어결과실행 시간메모리
1299281AksLolCoding9월 (APIO24_september)C++17
100 / 100
214 ms17644 KiB
#include <bits/stdc++.h>
using namespace std;

void dfs(vector <vector<int>>& child,vector<int>& maxpos, int u){
    for (int i=0; i<child[u].size(); i++){
        dfs(child,maxpos,child[u][i]);
        maxpos[u]=max(maxpos[u],maxpos[child[u][i]]);
    }
}


int solve(int n, int m, vector<int> v1, vector<vector<int>> v2){
    vector <int> maxpos(n);
    vector <vector<int>> child(n);

    for (int i=1; i<n; i++){
        child[v1[i]].push_back(i);
    }
    for (int j=0; j<m; j++){
    for (int i=0; i<n-1; i++){
        maxpos[v2[j][i]]=max(maxpos[v2[j][i]],i);
    }}
    
    dfs(child,maxpos,0);
    
    int ans=0,cur=-1;
    for (int i=0; i<n-1; i++){
        if (cur<i)ans++;
        for (int j=0; j<m; j++){
        cur=max(cur,maxpos[v2[j][i]]);
    }}
    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...