#include using namespace std; int read(){ int tot=0,fh=1; char c=getchar(); while ((c<'0')||(c>'9')){ if (c=='-') fh=-1; c=getchar(); } while ((c>='0')&&(c<='9')){ tot=tot*10+c-'0'; c=getchar(); } return tot*fh; } const int maxn=100010; int T,opt; int n,m; int a[maxn],fa[maxn]; vector son[maxn]; int i,j,k; int f[maxn],ans; void dfs(int x){ if (a[x]==1) f[x]=m; else f[x]=1e9; for (int i=0;in) m=n+1; for (i=1;i<=n;i++) son[i].clear(); for (i=2;i<=n;i++){ fa[i]=read(); son[fa[i]].push_back(i); } for (i=1;i<=n;i++) a[i]=read(); dfs(1); if (f[1]<=1e8) ans++; printf("%d\n",ans); } return 0; } /* 3 5 1 1 2 3 4 1 1 1 1 1 5 2 1 1 2 3 1 1 1 1 1 5 0 1 1 2 3 1 1 1 1 1 */