求跳
查看原帖
求跳
752953
sLMxf楼主2024/10/16 09:41
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct dot{
	int fa,gf,dep,i;
	bool operator<(const dot A)const{
		return dep>A.dep;
	}
}a[1005];
int x1[1005],x2[1005];
map<int,int>dy;
vector<int>G[1005];
signed main()
{
	int n,ans=0;
	cin>>n;
	a[1].dep=a[1].fa=a[1].gf=a[1].i=1;
	for(int i=2;i<=n;i++)
	{
		cin>>a[i].fa;
		a[i].gf=a[a[i].fa].fa;
		a[i].dep=a[a[i].fa].dep+1;
		a[i].i=i;
		G[i].push_back(a[i].fa);
		G[a[i].fa].push_back(i);
	}
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++) dy[a[i].i]=i;
	for(int i=1;i<=n;i++)
	{
		if(x1[i]||x2[i]) continue;
		x1[dy[a[i].gf]]=1;ans++;
		for(int x=0;x<G[a[i].gf].size();x++) x2[dy[G[a[i].gf][x]]]=1;
	}
	cout<<ans;
	return 0;
}
2024/10/16 09:41
加载中...