Submission #1152816

#TimeUsernameProblemLanguageResultExecution timeMemory
1152816burgerguySeptember (APIO24_september)C++20
0 / 100
0 ms580 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

vector<ll> memo;

ll dfs(ll v, ll parent, vector<set<ll>>& adj, vector<vector<ll>>& volunteers) {
    if(memo[v] != -1) return memo[v];

    ll lastFall = -1;
    for (ll i = 0; i < volunteers.size(); i++) {
        lastFall = max(lastFall, volunteers[i][v]);
    }

    for(ll e : adj[v]) {
        if(e != parent) {
            lastFall = max(lastFall, dfs(e, v, adj, volunteers));
        }
    }

    return memo[v] = lastFall;
}

int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
    memo.resize(N, -1);

    vector<set<ll>> initialTree(N);
    for (int i = 1; i < F.size(); i++) {
        initialTree[F[i]].insert(i);
    }

    vector<vector<ll>> volunteers(M, vector<ll>(N));
    for (int i = 0; i < S.size(); ++i) {
        for (int j = 0; j < S[i].size(); ++j) {
            volunteers[i][S[i][j]] = j;
        }
    }

    dfs(0, -1, initialTree, volunteers);

    vector<ll> ordered(N - 1);
    for (int i = 0; i < S[0].size(); ++i) {
        ordered[i] = memo[S[0][i]];
    }

    ll ans = 0, curFall = -1;
    for (int i = 0; i < ordered.size(); ++i) {
        if(curFall < ordered[i]) {
            ++ans;
            curFall = ordered[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...