蒟蒻求助,dfs40分
查看原帖
蒟蒻求助,dfs40分
339846
RuntimeErr楼主2020/10/17 15:51

巨水代码如下

#include<cstdio>
#include<iostream>
using namespace std;
const int N=1e6+1; 
int n; 
struct node{
	int ls,rs,num,cnt;
}t[N];
int dfs(int p){
	if(t[p].cnt)return t[p].cnt; 
	if(t[t[p].ls].num!=t[t[p].rs].num)return -1;
	if(t[p].ls==-1&&t[p].rs==-1)return 1;
	int ans1,ans2;
	if(t[p].ls!=-1&&t[p].rs!=-1){
		ans1=dfs(t[p].ls);
		ans2=dfs(t[p].rs);
		if(ans1==-1||ans2==-1)return -1;
		else return t[p].cnt=ans1+ans2+1;
	}
	else return -1;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&t[i].num);
	for(int i=1;i<=n;i++){
		scanf("%d%d",&t[i].ls,&t[i].rs);
		t[i].cnt=0;
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		ans=max(ans,dfs(i));
	}
	printf("%d",ans);
	return 0;
}
2020/10/17 15:51
加载中...