(题目自己找)
就是个朴素搜索,不知道为什么会Runtime Error
#include<bits/stdc++.h>
using namespace std;
struct node{
int l,r,v;
}a[1000005];
int n,ans;
bool dfs(int x,int y){
if(x==-1&&y==-1) return 1;
if(x==-1||y==-1) return 0;
if(a[x].v!=a[y].v) return 0;
if(dfs(a[x].l,a[y].r)&&dfs(a[x].r,a[y].l)) return 1;
return 0;
}
int sum(int x){
if(x==-1) return 0;
return sum(a[x].l)+sum(a[x].r)+1;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",a[i].v);
for(int i=1;i<=n;i++) scanf("%d%d",a[i].l,a[i].r);
for(int i=1;i<=n;i++) if(dfs(i,i)) ans=max(ans,sum(i));
printf("%d",ans);
return 0;
}