#include using namespace std; const int N=1e5+11; vector e[N]; int p[N],d[N]; int f[N]; int ans; int n,k; void dfs(int x){ if(f[x]) f[x]=d[x]; for(int y:e[x]){ d[y]=d[x]+1; dfs(y); f[x]=max(f[x],f[y]); } if(f[x]-d[x]>=k){ //cerr<>T; while(T--){ cin>>n>>k; for(int i=1;i<=n;++i)e[i].clear(); for(int i=2;i<=n;++i){ cin>>p[i]; e[p[i]].push_back(i); } for(int i=1;i<=n;++i)cin>>f[i]; //cerr<<"f[1]="<