Submission #1106123

#TimeUsernameProblemLanguageResultExecution timeMemory
1106123ortsacCat in a tree (BOI17_catinatree)C++17
100 / 100
61 ms17096 KiB
#include <bits/stdc++.h> using namespace std; #define pii pair<int, int> #define fr first #define se second const int MAXN = 2e5 + 10; vector<int> adj[MAXN]; int n, d; pii calc(int node) { if (adj[node].empty()) { return {0, 1}; } vector<pii> dec; for (auto u : adj[node]) { dec.push_back(calc(u)); } sort(dec.begin(), dec.end(), greater<pii>()); int lst = 0x3f3f3f3f, ans = 0; for (auto u : dec) { if ((lst + u.fr + 2) >= d) { ans += u.se; lst = u.fr; } else { ans += (u.se - 1); } } lst++; if (lst == d) { lst = 0; ans++; } return {lst, ans}; } int32_t main() { cin >> n >> d; for (int i = 1 ; i < n; i++) { int x; cin >> x; adj[x].push_back(i); } cout << calc(0).se << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...