제출 #1151445

#제출 시각아이디문제언어결과실행 시간메모리
1151445burgerguy9월 (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...