我先用dfs求出所有人的管理关系(存在guan数组里)
然后暴力枚举可管理所有参加合作员工的人
本来时间复杂度不会超
结果多了一行,也不知道怎么回事
我蒙圈了,求调!谢谢!
#include<bits/stdc++.h>
using namespace std;
bool guan[300][300];
int f[300],n,q;
int part[300];
void dfs(int last,int now)
{
guan[now][last]=1;
if(now==0) return;
dfs(last,f[now]);
}
int main()
{
cin>>n;
for(int i=1;i<n;i++)
{
cin>>f[i];
}
for(int i=0;i<n;i++)
{
dfs(i,i);
}
cin>>q;
for(int i=1;i<=q;i++)
{
int m;
cin>>m;
for(int j=1;j<=m;j++)
{
cin>>part[j];
}
for(int j=n-1;j>=0;j--)
{
bool can=1;
for(int k=1;k<=m;k++)
{
if(!guan[j][part[k]])
{
can=0;
break;
}
}
if(can)
{
cout<<j<<endl;
break;
}
}
}
return 0;
}