Submission #1181127

#TimeUsernameProblemLanguageResultExecution timeMemory
1181127thangdz2k7September (APIO24_september)C++20
100 / 100
171 ms11392 KiB
#include <bits/stdc++.h>

using namespace std;

int solve(int N, int M, vector <int> F, vector <vector <int>> S){

    vector <vector <int>> adj(N);
    for (int i = 1; i < N; ++ i)
        adj[F[i]].push_back(i);


    vector <int> cnt(N, 0), vis(N, 0);
    int numm = 0, numt = 0;

    auto add = [&](int u) -> void {
        cnt[u] ++;
        if (cnt[u] == M) numm ++;

        queue <int> qu;
        if (!vis[u]) qu.push(u);
        while (qu.size()){
            int u = qu.front(); qu.pop();
            vis[u] = 1; numt ++;

            for (int v : adj[u]) if (!vis[v])
                qu.push(v);
        }
    };

    int ans = 0;
    for (int i = 0; i < N - 1; ++ i){
        for (int j = 0; j < M; ++ j)
            add(S[j][i]);

        if (numm == numt) 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...