#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
vector<set<ll>> initialTree(N);
for (int i = 1; i < F.size(); i++) {
initialTree[F[i]].insert(i);
}
set<ll> initialLeaves;
for (int i = 0; i < initialTree.size(); ++i) {
if(initialTree[i].empty()) initialLeaves.insert(i);
}
ll maxDays = 0;
for(vector<int> record : S) {
ll curDays = 0;
vector<set<ll>> tree = initialTree;
set<ll> leaves = initialLeaves;
for(int e : record) {
if(leaves.find(e) != leaves.end()) {
leaves.erase(e);
tree[F[e]].erase(e);
if(tree[F[e]].empty()) {
leaves.insert(F[e]);
}
++curDays;
}
else break;
}
maxDays = max(maxDays, curDays);
}
return maxDays;
}
# | 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... |