Rt,样例都对,下了个测试点也对
我是蒟蒻小草,老师摇摇头直说改不好,求助大佬为什么过不了,请大家帮帮我好不好 QwQ
#include<iostream>
using namespace std;
const int N=1000005;
int n;
int a[N];
int L[N],R[N];
int siz[N];
int ans=0;
void dfs(int u){
if(u==-1) return;
siz[u]=1;
dfs(L[u]);
dfs(R[u]);
siz[u]+=siz[L[u]]+siz[R[u]];
}
bool check(int l,int r){
if(l==-1&&r==-1) return true;
if(l==-1||r==-1) return false;
if(a[l]==a[r]&&check(L[l],R[r])&&check(R[l],L[r])) return true;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
cin>>L[i]>>R[i];
}
dfs(1);
for(int i=1;i<=n;i++){
if(check(L[i],R[i])) ans=max(ans,siz[i]);
}
cout<<ans;
return 0;
}