为什么爆内存
查看原帖
为什么爆内存
511042
Edwin_liannan楼主2021/11/16 20:33
#include<bits/stdc++.h>
using namespace std;
int n,ans;
struct node{int c1,c2,val,size;}tr[1000005];
int cnt(int u){return u==-1?0:cnt(tr[u].c1)+cnt(tr[u].c2)+1;}
bool flg(int u,int v){
	return u==v==-1||tr[u].val==tr[v].val&&flg(tr[u].c1,tr[v].c2)&&u!=-1&&v!=-1&&flg(tr[u].c2,tr[v].c1);
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>tr[i].val;
	for(int i=1;i<=n;i++) cin>>tr[i].c1>>tr[i].c2;
	cnt(1);
	for(int i=1;i<=n;i++) if(flg(tr[i].c1,tr[i].c2)) ans=max(ans,cnt(i));
	cout<<ans;
}
2021/11/16 20:33
加载中...