90pts多了一行,求大佬指点迷津!
查看原帖
90pts多了一行,求大佬指点迷津!
859192
DarrenTu楼主2025/1/29 22:15

我先用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;
}
2025/1/29 22:15
加载中...