Submission #244527

#TimeUsernameProblemLanguageResultExecution timeMemory
244527kshitij_sodaniCat in a tree (BOI17_catinatree)C++17
51 / 100
1085 ms14696 KiB
#include <bits/stdc++.h> using namespace std; typedef int64_t llo; #define mp make_pair #define pb push_back #define a first #define b second //#define endl '\n' int n,d; int ans=0; vector<int> adj[200001]; int vis[200001]; vector<pair<int,int>> cur; void dfs(int no,int par=-1,int levv=0){ cur.pb({levv,no}); for(auto j:adj[no]){ if(j==par){ continue; } dfs(j,no,levv+1); } } void dfs2(int no,int par=-1,int levv=0){ vis[no]=1; if(levv<d-1){ for(auto j:adj[no]){ if(j==par){ continue; } dfs2(j,no,levv+1); } } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>d; for(int i=1;i<n;i++){ int aa; cin>>aa; adj[aa].pb(i); adj[i].pb(aa); } dfs(0); sort(cur.begin(),cur.end()); reverse(cur.begin(),cur.end()); for(auto no:cur){ if(vis[no.b]){ continue; } ans+=1; dfs2(no.b); } cout<<ans<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...