想知道为什么这样做会T掉
#include <bits/stdc++.h>
#define ll long long
#define MAXN 305
using namespace std;
int fa[MAXN];
int h[MAXN];
int n,q;
int high(int x){
int num=0;
while(x!=fa[x]){x=fa[x];num++;}
return num;
}
int LCA(int x,int y){
if(h[x]<h[y]) swap(x,y);
while(h[y]<h[x]) y=fa[y];
if(x==y) return x;
while(x!=y){
x=fa[x];
y=fa[y];
}
return x;
}
int main(){
cin>>n;
fa[0]=0;
for(int i=1;i<n;++i){cin>>fa[i];h[i]=high(i);}
cin>>q;
for(int i=1;i<=q;++i){
int num,now,last;
cin>>num;
cin>>now;
for(int i=1;i<num;++i){
cin>>last;
now=LCA(now,last);
}
cout<<now<<endl;
}
return 0;
}