Submission #348574

#TimeUsernameProblemLanguageResultExecution timeMemory
348574Nima_NaderiCat in a tree (BOI17_catinatree)C++14
100 / 100
240 ms25312 KiB
///In the name of GOD #pragma GCC optimize("O2") #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll MXN = 2e5 + 10; ll n, m, ans; ll h[MXN], dis[MXN]; vector<ll> adj[MXN], Ver; void DFS(ll u, ll par, ll d){ if(d >= m || d >= dis[u]) return; dis[u] = d; for(auto v : adj[u]){ if(v != par) DFS(v, u, d + 1); } } void dfs(ll u, ll par){ Ver.push_back(u); for(auto v : adj[u]){ if(v != par){ h[v] = h[u] + 1; dfs(v, u); } } } int main(){ ios::sync_with_stdio(0);cin.tie(0); cout.tie(0); memset(dis, 63, sizeof dis); cin >> n >> m; for(int i = 2; i <= n; i ++){ ll x; cin >> x, x ++; adj[i].push_back(x), adj[x].push_back(i); } dfs(1, 0); sort(Ver.begin(), Ver.end(), [&](const int& u, const int &v){ return h[u] > h[v]; }); for(auto u : Ver){ if(dis[u] < m) continue; ans ++; DFS(u, 0, 0); } cout << ans << '\n'; return 0; } /*! HE'S AN INSTIGATOR, ENEMY ELIMINATOR, AND WHEN HE KNOCKS YOU BETTER YOU BETTER LET HIM IN. */ //! N.N
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...