Submission #1360722

#TimeUsernameProblemLanguageResultExecution timeMemory
1360722ramez-hammadSeptember (APIO24_september)C++20
100 / 100
93 ms10868 KiB
#include <bits/stdc++.h>

using namespace std;

#define pb push_back

int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
    vector<vector<int>> children(N); for (int i=1;i<N;i++) children[F[i]].pb(i);
    vector<int> seen(N);
    int ver=0;
    vector<int> seg;
    int ans=0;
    for (int i=0;i<N-1;i++) {
        for (int j=0;j<M;j++) {
            seen[S[j][i]]++;
            if (seen[S[j][i]]==1) {ver++; seg.pb(S[j][i]);};
            if (seen[S[j][i]]==M) ver--;
        }
        if (ver==0) {
            bool valid_tree=true;
            for (int u : seg) { 
                for (int c : children[u]) if (!seen[c]) {valid_tree=false; break;}
                if (!valid_tree) break;
            }
            if (valid_tree) {ans++; seg.clear();}
        }
    }
    return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...