Submission #1226702

#TimeUsernameProblemLanguageResultExecution timeMemory
1226702SpyrosAlivSeptember (APIO24_september)C++20
45 / 100
85 ms2848 KiB
#include "september.h" #include <bits/stdc++.h> using namespace std; int n, m; vector<int> par; int solve(int N, int M, vector<int> F, vector<std::vector<int>> S) { n = N; m = M; assert(m == 1); par = F; vector<int> cnt(n, 0); vector<bool> inside(n, false); for (int i = 1; i < n; i++) cnt[par[i]]++; priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq; int tot = 0; for (auto x: S[0]) { pq.push({cnt[x], x}); inside[x] = true; while (!pq.empty()) { if (cnt[pq.top().second] != pq.top().first) { pq.pop(); continue; } int curr = pq.top().second; if (cnt[curr] == 0) { pq.pop(); cnt[par[curr]]--; if (inside[par[curr]]) pq.push({cnt[par[curr]], par[curr]}); continue; } break; } if (pq.empty()) tot++; } return tot; }
#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...