#include<bits/stdc++.h>
using namespace std;
int n,t,i,j;
vector<int>sons[100010];
int dp(int u){
if(sons[u].empty())return 1;
int i,k=sons[u].size();
vector<int>d;
for(i=0;i<k;i++)
d.push_back(dp(sons[u][i]));
sort(d.begin(),d.end());
int c=(k*t-1)/100+1,ans=0;
for(i=0;i<c;i++)ans+=d[i];
return ans;
}
int main(){
while(scanf("%d%d",&n,&t)&&n&&t){
for(i=0;i<=n;i++)
sons[i].clear();
for(i=1;i<=n;i++){
scanf("%d",&j);
sons[j].push_back(i);
}
printf("%d\n",dp(0));
}
return 0;
}
UVA 12186 Another Crisis
最新推荐文章于 2020-09-22 17:21:35 发布