Submission #1151445

#TimeUsernameProblemLanguageResultExecution timeMemory
1151445burgerguySeptember (APIO24_september)C++20
0 / 100
1 ms580 KiB
#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 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...