제출 #1260685

#제출 시각아이디문제언어결과실행 시간메모리
1260685DangKhoizzzzCat in a tree (BOI17_catinatree)C++20
11 / 100
72 ms19272 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; const int maxn = 3e5 + 7; int n, D, d[2005][2005]; vector <int> g[maxn]; vector <int> chosen; void dfs_ans(int u, int p) { for(int v: g[u]) { if(v == p) continue; dfs_ans(v, u); } bool add = true; for(int node: chosen) { if(d[node][u] < D) add = false; } if(add) chosen.push_back(u); } void dfs(int u , int p , int root , int h) { d[root][u] = h; for(int v: g[u]) { if(v == p) continue; dfs(v , u , root , h+1); } } void solve() { cin >> n >> D; for(int i = 1; i < n; i++) { int v; cin >> v; g[i+1].push_back(v+1); g[v+1].push_back(i+1); } for(int i = 1; i <= n; i++) { dfs(i , i , i , 0); } int ans = 0; for(int i = 1; i <= n; i++) { dfs_ans(i , i); ans = max(ans , (int)(chosen.size())); chosen.clear(); } cout << ans << '\n'; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...