莫名崩溃
  • 板块学术版
  • 楼主pencil
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/9/25 21:00
  • 上次更新2023/11/5 12:38:09
查看原帖
莫名崩溃
137723
pencil楼主2020/9/25 21:00
#include<bits/stdc++.h>
using namespace std;
int q[1000010],son[1000010][3],size[1000010],z[1000010];
bool dfs (int u) {
//	size[u]=1;
	if(z[u]==0)return 0;
	if(z[u]==1) return 1;
	if(son[u][1]==-1&&son[u][2]==-1) {
		z[u]=1;
		return 1;
	}
	if(son[u][1]==-1||son[u][2]==-1) {
		z[u]=0;
		return 0;
	}
	if(size[son[u][1]]!=size[son[u][2]]) {
		z[u]=0;
		return 0;
	}
	return dfs(son[u][1])&&dfs(son[u][2]);
}
int ji(int h) {
	if(h==-1)
		return 0;
	else
		return ji(size[son[h][1]])+ji(size[son[h][2]])+1;
}
int main() {
	int n,maxx=-1,i;
	memset(size,1,sizeof(size));
	memset(z,-1,sizeof(z));
	cin>>n;
	for(i=1; i<=n; i++)
		cin>>q[i];
	for(i=1; i<=n; i++) {
		cin>>son[i][1]>>son[i][2];
	}
	for(i=1; i<=n; i++)
		if(dfs(i))
			maxx=max(maxx,ji(i));
	cout<<maxx;
	return 0;
}
2020/9/25 21:00
加载中...