Submission #940666

#TimeUsernameProblemLanguageResultExecution timeMemory
940666phoenix0423Cat in a tree (BOI17_catinatree)C++17
100 / 100
35 ms17232 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pll; #define fastio ios::sync_with_stdio(false), cin.tie(0) #define pb push_back #define eb emplace_back #define f first #define s second #define lowbit(x) x&-x const int maxn = 2e5 + 5; vector<int> adj[maxn]; int n, k; int ans[maxn], d[maxn]; void dfs(int pos){ ans[pos] = 1; for(auto x : adj[pos]){ dfs(x); ans[pos] += ans[x]; if(d[x] + d[pos] + 1 < k) ans[pos] --, d[pos] = max(d[pos], d[x] + 1); else d[pos] = min(d[pos], d[x] + 1); } } signed main(void){ fastio; cin>>n>>k; for(int i = 1; i < n; i++){ int x; cin>>x; adj[x].pb(i); } dfs(0); cout<<ans[0]<<"\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...