#include "september.h"
using namespace std;
const int N = 1e5;
vector<int> g[N];
int n, m, pos[N];
void dfs(int u) {
for (int v : g[u]) {
dfs(v);
pos[u] = max(pos[u], pos[v]);
}
}
void clear() {
for (int i = 0; i < n; i++) {
g[i].clear();
pos[i] = 0;
}
}
int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
n = N, m = M;
clear();
int cnt[n], dif = 0;
fill(cnt, cnt + n, 0);
for (int i = 1; i < n; i++) {
g[F[i]].push_back(i);
}
for (int i = 0; i < n - 1; i++) {
pos[S[0][i]] = i;
}
dfs(0);
int res = 0, cur = 0;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < m; j++) {
dif += (!cnt[S[j][i]]);
dif -= (++cnt[S[j][i]] == m);
}
cur = max(cur, pos[S[0][i]]);
res += (cur <= i and !dif);
}
return res;
}
# | 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... |