56 分求调
查看原帖
56 分求调
1388216
zhuangjinning楼主2025/1/20 16:33
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int v[1000002];
int l[1000002];
int r[1000002];
int ans=0;
bool chk(int x,int y){
	if(x==-1 and y==-1){
		return true;
	}
	if(x==-1 or y==-1){
		return false;
	}
	if(v[x]!=v[y]){
		return false;
	}
	return chk(l[x],r[y])and(r[x],l[y]);
}
int dx(int x){
	if(x==-1){
		return 0;
	}
	return dx(l[x])+dx(r[x])+1;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>v[i];
	}
	for(int i=1;i<=n;i++){
		cin>>l[i]>>r[i];
	}
	for(int i=1;i<=n;i++){
		if(chk(i,i)){
			ans=max(ans,dx(i));
		}
	}
	cout<<ans;
	return 0;
}

2025/1/20 16:33
加载中...