提交时间:2024-01-23 20:28:40

运行 ID: 125661

#include<bits/stdc++.h> using namespace std; const int maxn=110; int f[maxn]; struct tree{ int right,left,data; }tree[maxn]; int ds[maxn],df=0; bool nmsl(int o,int n){ if(o!=-1){ nmsl(tree[o].left ,n); ds[++df]=f[tree[o].data]; nmsl(tree[o].right,n ); if(o==n){ for(int i=1;i<=(df+1)/2;i++)if(ds[i]!=ds[df+1-i]){ return 0; } return 1; } } } void sb(int nod){ if(nod!=-1){ if(nmsl(nod,nod)==1){ cout<<df; df=0; exit(0); }else{ df=0; sb(tree[nod].left); sb(tree[nod].right); } } } int main() { int n; cin>>n; for(int i=1;i<=n;i++)cin>>f[i]; for(int i=1;i<=n;i++){ cin>>tree[i].left>>tree[i].right; tree[i].data =i; } sb(1); }