贪心 0 pt 求助
查看原帖
贪心 0 pt 求助
767449
KukCair楼主2024/10/16 09:48
#include <bits/stdc++.h>
using namespace std;
struct p{
	int id, dep, F, F2;
}a[1005];
bool cmp(p x, p y){
	return x.dep > y.dep;
}
int n, c;
bool fl[1005];
vector<int> vc[1005];
void dfs(int x, int fa){
	a[x].dep = a[fa].dep + 1;
	a[x].F = fa;
	a[x].F2 = a[fa].F;
	for(int i = 0; i < vc[x].size(); i++){
		int v = vc[x][i];
		if(v != fa){
			dfs(v, x);
		}
	}
}
void dfss(int x, int d, int fa){
	if(!d) return;
	fl[x] = 1;
	for(int i = 0; i < vc[x].size(); i++){
		int v = vc[x][i];
		if(v != fa)	dfss(v, d - 1, x);
	}
}
int main(){
	cin >> n;
	for(int i = 1; i <= n - 1; i++){
		int a;
		cin >> a;
		vc[a].push_back(i);
		vc[i].push_back(a);
	}
	dfs(1, 0);
	sort(a + 1, a + n + 1, cmp);
	for(int i = 1; i <= n; i++){
		int v = a[i].id, fa = a[i].F, gfa = a[i].F2;
		if(fl[v]) continue;
		c++;
		dfss(gfa, 2, 0);
	}
	cout << c;
	return 0;
}
/*



*/
2024/10/16 09:48
加载中...