蒟蒻很是头疼的一次玄学RE……
求你谷各巨佬解答……
#include <bits/stdc++.h>
using namespace std;
long long ans,n,fa[100005],data[100005],m,cnt[100005],num[100005];
void gd(int x)
{
int f=fa[x];
num[x]+=cnt[f];
num[f]+=cnt[x];
}
int main()
{
cin>>n>>m;
for(int i=2;i<=n;i++)
scanf("%lld",&fa[i]);
for(int i=1;i<=m;i++)
{
int x;
scanf("%lld",&x);
cnt[x]++;
}
for(int i=1;i<=n;i++)
num[i]=cnt[i];
for(int i=2;i<=n;i++)
gd(i);
for(int i=1;i<=n;i++)
ans+=num[i]*(num[i]+1)/2;
cout<<ans;
}//RE
#include <bits/stdc++.h>
using namespace std;
long long ans,n,fa[100005],data[100005],m,cnt[100005],num[100005];
void gd(int x)
{
int f=fa[x];
num[x]+=cnt[f];
num[f]+=cnt[x];
}
int main()
{
cin>>n>>m;
for(int i=2;i<=n;i++)
cin>>fa[i];
for(int i=1;i<=m;i++)
{
int x;
cin>>x;
cnt[x]++;
}
for(int i=1;i<=n;i++)
num[i]=cnt[i];
for(int i=2;i<=n;i++)
gd(i);
for(int i=1;i<=n;i++)
ans+=num[i]*(num[i]+1)/2;
cout<<ans;
}//AC
(话说这scanf是为了快速输入打的(因为T了一个点))