题目描述
blablabla
样例
blablabla
算法1
blablabla
时间复杂度
参考文献
这就过了???????
修改: 刚刚试了一下,提交一次会T, 提交第二次就会过. ???????
C++ 代码
#include <iostream>
#define N 1000010
using namespace std;
int v[N], l[N], r[N];
int num[N];
bool is(int left, int right){
if(left == -1 && right == -1) return true;
if(v[left] != v[right]) return false;
else return (is(l[left], r[right]) && is(l[right], r[left]));
}
int getn(int root){
if(root == -1) return 0;
if(num[root]) return num[root];
return num[root] = getn(l[root]) + getn(r[root]) + 1;
}
int main(){
int n,ans=0;
cin >> n;
for(int i = 1; i <= n; i ++ ){
cin >> v[i];
}
for(int i = 1; i <= n; i ++ ){
cin >> l[i] >> r[i];
}
for(int i = 1; i <= n; i ++ ){
if(is(l[i], r[i])){
int tmp = getn(i);
if(tmp > ans ) ans = tmp;
}
}
cout << ans;
}