记录编号 605995 评测结果 AAAAAAAAAAAAAAAAAA
题目名称 4176.[USACO25 Feb Silver]Vocabulary Quiz 最终得分 100
用户昵称 GravatarHollow07 是否通过 通过
代码语言 C++ 运行时间 5.042 s
提交时间 2025-09-13 17:11:03 内存使用 54.20 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long

ll n,m,p[1000005],dep[1000005];
ll cnt[1000005];
vector<ll> e[1000005];

void dfs1(ll x){
	dep[x] = dep[p[x]] + 1;
	if(!cnt[x])m++;
	for(auto i: e[x]){
		dfs1(i);
	}
}

ll dfs2(ll x){
	if(cnt[x]) return dep[x] + 1;
	if(x == 0) return 0;
	cnt[p[x]]--;
	return dfs2(p[x]);
}

int main(){
//	freopen("in.in","r",stdin);
	freopen("Vocabulary.in","r",stdin);
	freopen("Vocabulary.out","w",stdout);
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&p[i]);
		cnt[p[i]]++;
		e[p[i]].push_back(i);
	}
	p[0]=0;dep[0]=-1;
	dfs1(0);
	for(int i=1;i<=m;i++){
		ll now;
		scanf("%lld",&now);
		printf("%lld\n",dfs2(now));
	}
	return 0;
}