Advertisement
royalsflush

Another Crisis - Live Archive 4472

Aug 30th, 2012
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.68 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <algorithm>
  3. #include <vector>
  4. #include <string.h>
  5. using namespace std;
  6.  
  7. #define MAXV 100000
  8.  
  9. int n,t;
  10. vector<int> a[MAXV+10];
  11.  
  12. int dfs(int v) {
  13.     if (!a[v].size())
  14.         return 1;
  15.  
  16.     vector<int> qtd;
  17.     for (int i=0; i<(int)a[v].size(); i++)
  18.         qtd.push_back(dfs(a[v][i]));
  19.  
  20.     sort(qtd.begin(), qtd.end());
  21.  
  22.     int emp=0;
  23.     for (int i=0; i<(int)qtd.size(); i++)
  24.         if (t*(int)qtd.size()>i*100)
  25.             emp+=qtd[i];
  26.     return emp;
  27. }
  28.  
  29. int main() {
  30.     while (1) {
  31.         scanf("%d %d", &n,&t);
  32.         if (!n && !t) break;
  33.  
  34.         n++;
  35.         for (int i=0; i<n; i++)
  36.             a[i].clear();
  37.  
  38.         for (int i=1; i<n; i++) {
  39.             int b;
  40.             scanf("%d", &b);
  41.             a[b].push_back(i);
  42.         }
  43.  
  44.         printf("%d\n", dfs(0));
  45.     }
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement