蒟蒻求助,68分
查看原帖
蒟蒻求助,68分
250607
toroso楼主2020/10/23 20:35
#include<stdio.h>
inline int read(){
	int k=0,j=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')j=-1;c=getchar();}
	while(c>='0'&&c<='9')k=k*10+c-'0',c=getchar();
	return k*j;
}
int max(int a,int b){return a>b?a:b;}
struct pp{int lson,rson,num;}a[1000005];
int js,t;
void dfs(int l,int r){
	if(l==-1||r==-1){t=1;return;}
	if(a[l].num!=a[r].num){t=1;return ;}js+=2;
	if(a[l].lson==-1&&a[l].rson==-1&&a[r].lson==-1&&
	a[r].rson==-1)return ;
	dfs(a[l].lson,a[r].rson);dfs(a[l].rson,a[r].lson);
	if(t)return ;
}
int main(){
	int n=read(),ans=0;
	for(int i=1;i<=n;i++)a[i].num=read();
	for(int i=1;i<=n;i++)a[i].lson=read(),a[i].rson=read();
	for(int i=1;i<=n;i++){
		t=0,js=1;
		if(a[i].lson!=-1||a[i].rson!=-1)dfs(a[i].lson,a[i].rson);
		if(!t)ans=max(ans,js);
	}
	printf("%d",ans);
	return 0;
}

我的记录 rt,请大佬帮忙看看问题在哪

2020/10/23 20:35
加载中...