Submission #1203735

#TimeUsernameProblemLanguageResultExecution timeMemory
1203735fadyscubeSeptember (APIO24_september)C++20
100 / 100
130 ms11392 KiB
#include "september.h"

#include <vector>
#include <bits/stdc++.h>

using namespace std;

int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
    vector<int> count(N, 0);
    int k = 0;

    int nodes = N;
    int degs = nodes-1;
    vector<int> deg(N, 1);
    deg[0]--;
    for (int i = 1; i < N; i++)
        deg[F[i]]++;

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


    int r = 0;
    for (int i = 0; i < N-1; i++) {
        bool yes = true;
        nodes--;
        degs -= deg[S[0][i]];
        deg[F[S[0][i]]]--;
        for (int j = 0; j < adj[S[0][i]].size(); j++)
            deg[adj[S[0][i]][j]]--;
        
        for (int j = 0; j < M; j++) {
            if (count[S[j][i]] == M-1) r++;
            count[S[j][i]]++;
        }
        if (nodes - degs == 1 && r == i+1)
            k++;
    }

    return k;
}
#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...