Submission #14204

#TimeUsernameProblemLanguageResultExecution timeMemory
14204aintaCompany Planning (TOKI14_company)C++98
7 / 100
130 ms13920 KiB
#include<stdio.h> #include<algorithm> #include<vector> using namespace std; vector<int>E[101000]; int n, m, D[101000], K, C[101000], w[101000]; void DFS(int a){ int i, r = 0; C[a] = 1; for (i = 0; i < E[a].size(); i++){ DFS(E[a][i]); C[a] += C[E[a][i]]; w[i] = C[E[a][i]] - D[E[a][i]]; r += D[E[a][i]]; } if (E[a].size() <= K){ D[a] = r; return; } sort(w, w + E[a].size()); for (i = 0; i < E[a].size() - K; i++){ r += w[i]; } D[a] = r; } int main(){ scanf("%d%d", &n, &m); int i, a, be = 0, ed = n - 1, r; for (i = 2; i <= n; i++){ scanf("%d", &a); E[a].push_back(i); } while (be <= ed){ K = (be + ed) >> 1; DFS(1); if (n - D[1] >= m){ r = K; ed = K - 1; } else be = K + 1; } printf("%d\n", r); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...