#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
// #define F first
// #define S second
#include "september.h"
int solve(int N, int M, vector<int> P, vector<vector<int>> S) {
vector<vector<int>> C(N);
for(int i = 1; i < N; i++) C[P[i]].push_back(i);
unordered_set<int> hL; // hanging leaves
vector<bool> done(N);
unordered_set<int> seen;
int K = 0;
FOR(i, S[0].size()) {
int cur = S[0][i];
done[cur] = true;
if (hL.find(cur) != hL.end()) hL.erase(hL.find(cur));
C[P[cur]].erase(find(all(C[P[cur]]), (cur)));
for(auto c: C[cur]) {
if (!done[c]) {
hL.insert(c);
}
}
FOR(j, M) seen.insert(S[j][i]);
if (hL.empty() && (seen.size() % (i+1) == 0)) K++;
}
return K;
}
// signed main() {
// cin.tie(0); ios::sync_with_stdio(false);
// }
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |