제출 #1177889

#제출 시각아이디문제언어결과실행 시간메모리
1177889adaawfSeptember (APIO24_september)C++20
100 / 100
103 ms16320 KiB
#include <bits/stdc++.h>
using namespace std;
vector<int> g[100005];
int b[100005], f[100005];
void dfs(int x) {
    f[x] = b[x];
    for (int w : g[x]) {
        dfs(w);
        f[x] = max(f[x], f[w]);
    }
}
int solve(int n, int m, vector<int> p, vector<vector<int>> a) {
    for (int i = 0; i < n; i++) {
        g[i].clear();
        b[i] = 0;
    }
    for (int i = 1; i < n; i++) {
        g[p[i]].push_back(i);
    }
    for (auto w : a) {
        for (int i = 0; i < n - 1; i++) {
            b[w[i]] = max(b[w[i]], i);
        }
    }
    dfs(0);
    int d = 0, ma = -1, res = 0;
    while (d < n - 1) {
        if (d == ma + 1) res++;
        for (int i = 0; i < m; i++) {
            ma = max(ma, f[a[i][d]]);
        }
        d++;
    }
    return res;
}
#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...