Submission #223870

#TimeUsernameProblemLanguageResultExecution timeMemory
223870BruteforcemanCat in a tree (BOI17_catinatree)C++11
51 / 100
1098 ms15212 KiB
#include <bits/stdc++.h> using namespace std; using pii = pair <int, int>; const int maxn = 2e5 + 10; vector <int> g[maxn]; int dep[maxn]; bool done[maxn]; void flood(int x, int par, int dist) { if(dist == 0) return ; done[x] = true; for(auto i : g[x]) { if(i != par) { flood(i, x, dist - 1); } } } void dfs(int x, int par) { for(auto i : g[x]) { if(i != par) { dep[i] = 1 + dep[x]; dfs(i, x); } } } int main() { ios_base :: sync_with_stdio (false); cin.tie(0); int n, D; cin >> n >> D; for(int i = 1; i < n; i++) { int x; cin >> x; g[x].emplace_back(i); g[i].emplace_back(x); } dfs(0, -1); vector <pii> v; for(int i = 0; i < n; i++) { v.emplace_back(dep[i], i); } sort(v.begin(), v.end(), greater <pii> ()); int ans = 0; for(auto i : v) { if(done[i.second]) continue; flood(i.second, -1, D); ++ans; } cout << ans << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...