Pagini recente » Cod sursa (job #911908) | Cod sursa (job #2990454) | Cod sursa (job #2530193) | Cod sursa (job #378479) | Cod sursa (job #209251)
Cod sursa(job #209251)
#include<stdio.h>
#include<string.h>
long n,tr[3001],l[3001],s[3001][3001],i,p[3001],q,x[3001],j,t,k;
int main()
{
freopen("dosare.in","r",stdin);
freopen("dosare.out","w",stdout);
scanf("%ld",&n);
tr[1]=1;
l[1]=1;
s[1][1]=1;
for(i=2;i<=n;++i)
{
scanf("%ld",&p[i]);
tr[i]=tr[p[i]]+1;
memcpy(s[i],s[p[i]],sizeof(s[p[i]]));
l[i]=l[p[i]]+1;
s[i][l[i]]=i;
}
for(i=1;i<=n;++i)
{
scanf("%ld",&q);
x[i]+=q;
for(j=l[i]-1;j>0;--j)x[s[i][j]]+=q;
}
t=0;
for(i=1;i<=n;++i)
for(j=1;j<=l[i];++j)
{
for(k=1;k<=n;++k)
if((x[k]>x[s[i][j]]||(x[k]==x[s[i][j]]&&s[i][j]>k))&&p[k]==p[s[i][j]])++t;
++t;
}
printf("%ld\n",t);
return 0;
}