Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <algorithm>
- #include <vector>
- #include <string.h>
- using namespace std;
- #define MAXV 100000
- int n,t;
- vector<int> a[MAXV+10];
- int dfs(int v) {
- if (!a[v].size())
- return 1;
- vector<int> qtd;
- for (int i=0; i<(int)a[v].size(); i++)
- qtd.push_back(dfs(a[v][i]));
- sort(qtd.begin(), qtd.end());
- int emp=0;
- for (int i=0; i<(int)qtd.size(); i++)
- if (t*(int)qtd.size()>i*100)
- emp+=qtd[i];
- return emp;
- }
- int main() {
- while (1) {
- scanf("%d %d", &n,&t);
- if (!n && !t) break;
- n++;
- for (int i=0; i<n; i++)
- a[i].clear();
- for (int i=1; i<n; i++) {
- int b;
- scanf("%d", &b);
- a[b].push_back(i);
- }
- printf("%d\n", dfs(0));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement