2 solutions

  • 0
    @ 2026-2-28 20:35:34
    #include<bits/stdc++.h>
    using namespace std;
    const int N=350;
    vector<int> g[N];
    bool st[N]; 
    void dfs(int u)
    {
    	st[u]=1;
    	for(auto j:g[u])
    	{
    		dfs(j);
    	}
    }
    int main()
    {
    	int n;
    	cin>>n;
    	for(int i=1;i<n;i++)
    	{
    		int x;
    		cin>>x;
    		g[x].push_back(i);
    	}
    	int m;
    	cin>>m;
    	while(m--)
    	{
    		int x;
    		cin>>x;
    		vector<int> v;
    		for(int i=1;i<=x;i++)
    		{
    			int t;
    			cin>>t;
    			v.push_back(t);	
    		} 
    		int ans=-1;
    		for(int i=0;i<n;i++)
    		{
    			memset(st,0,sizeof st);
    			dfs(i);//去管理对应的人
    			int cnt=0;
    			for(auto x:v)
    			{
    				if(st[x]==0) cnt++;	
    			} 
    			if(cnt==0)
    			{
    				ans=i;
    			}
    		}
    		cout<<ans<<endl;
    	}
    	return 0;
    }
    
    

    Information

    ID
    2541
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    (None)
    # Submissions
    12
    Accepted
    4
    Uploaded By