可使用二叉树来进行判断 先将第一个需要判断的人的五代都做上标记然后再遍历第二个需要判断的人查看是否有被标记过的人就行
#includeusing namespace std; map mp; map xb; int vis[100000]={0}; struct node { int left=-1,right=-1; int s; }; struct node a[100000]; int flag=0; void dfs(int x,int deep){ if(deep>5) return; vis[x]=1; if(a[mp[x]].left!=-1) dfs(a[mp[x]].left,deep+1); if(a[mp[x]].right!=-1) dfs(a[mp[x]].right,deep+1); } void check(int x,int deep){ if(flag==1||deep>5) return; if(vis[x]==1){ flag=1; return; } if(a[mp[x]].left!=-1){ check(a[mp[x]].left,deep+1); } if(a[mp[x]].right!=-1){ check(a[mp[x]].right,deep+1); } } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ int s,s1,s2; char c; cin>>s>>c>>s1>>s2; xb[s1]='M'; xb[s2]='F'; mp[s]=i; xb[s]=c; a[i].left=s1; a[i].right=s2; a[i].s=s; } int k; cin>>k; for(int i=1;i<=k;i++){ int x,y; cin>>x>>y; fill(vis,vis+100000,0); if(xb[x]==xb[y]){ cout<<"Never Mind"<



