#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) {
int n = N, m = M;
vector<vector<int>> v(n, vector<int>());
vector<vector<int>> pos(m, vector<int>(n));
int t = -1;
for (int i = 1; i < n; i++) {
v[F[i]].emplace_back(i);
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n - 1; j++) {
pos[i][S[i][j]] = j;
}
}
auto dfs = [&] (auto &&dfs, int cur, int par) -> void {
for (auto &e: v[cur]) {
if (par == e) continue;
dfs(dfs, e, cur);
for (int i = 0; i < m; i++) {
pos[i][cur] = max(pos[i][cur], pos[i][e]);
}
}
};
dfs(dfs, 0, -1);
int ans = 0;
vector<int> ptr(m);
for (int i = 0; ; i++) {
int mx = -1;
for (int j = 0; j < m; j++) {
mx = max(mx, pos[j][S[j][ptr[j]]]);
}
for (int j = 0; j < m; j++) {
ptr[j] = mx + 1;
}
ans++;
if (mx + 1 >= n - 1) break;
}
return ans;
return 0;
}
# | 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... |