#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N][3],n,dp[N],f[N];
int full[N],comp[N];
void dfs(int x){
	if(x==0) return;
	int l=a[x][1],r=a[x][2];
	dfs(l);
	dfs(r);
	dp[x]=max(dp[l],dp[r])+1;
	if(full[l] && full[r] && dp[l]==dp[r]){
		full[x]=1;
	}if(full[l] && comp[r] && dp[l]==dp[r]){
		comp[x]=1;
	}if(comp[l] && full[r] && dp[l]-1==dp[r]){
		comp[x]=1;
	}
}int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i][1]>>a[i][2];
	}f[0]=1;
	full[0]=1;
	comp[0]=1;
	dfs(1);
	int cnt=0;
	for(int i=1;i<=n;i++){
		cnt+=comp[i];
	}
	cout<<cnt;
	return 0;
}


0 条评论

目前还没有评论...

信息

ID
2664
时间
ms
内存
MiB
难度
3
标签
递交数
88
已通过
21
上传者