#include <bits/stdc++.h>
using namespace std;
const int MAXN=1000001;
int node[MAXN],lson[MAXN],rson[MAXN],m, ans=1;
bool OK=1;
int Dfs(int x,int y,int s)
{
if(x==-1 && y==-1)
return 0;
if((x==-1 || y==-1) || node[x]!=node[y])
{
OK=0;
return 0;
}
return Dfs(lson[x],rson[y],2)+Dfs(rson[x],lson[y],2)+s;
}
int main()
{
cin>>m;
for(int i=1; i<=m; i++)
cin>>node[i];
for(int i=1; i<=m; i++)
cin>>lson[i]>>rson[i];
for(int i=1; i<=m; i++)
{
int sum=Dfs(lson[i],rson[i],3);
if(sum>ans && OK)
ans=sum;
OK=1;
}
cout<<ans<<endl;
return 0;
}
//思路:DFS
哇塞!还厉害呀!膜拜膜拜大佬!真厉害呀!崇拜你呢~好厉害呀~
这个AC不了,会超时,要优化,要代码的再等等
比赛已结束。