并查集0pts求调
查看原帖
并查集0pts求调
1285691
yinbe2楼主2024/4/9 22:11

评测记录

#include<iostream>
using namespace std;
int n,m,fa[3005],s[3005],cnt;
struct road
{
	int a,b;
}r[3005];
bool find_fa(int i)
{
	if(fa[i]==i)
	{
		return i;
	}
	fa[i]=find_fa(fa[i]);
	return fa[i];
}
bool check(int m)
{
	for(int i=1;i<=cnt;i++)
	{
		if(m==s[i])
		{
			return true;
		}
	}
	return false;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		int a,b;
		scanf("%d%d",&a,&b);
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			fa[j]=j;
		}
		int tree=n;
		bool flag=true;
		for(int j=1;j<=m;j++)
		{	
			int a=r[j].a;
			int b=r[j].b;
			if(check(a)||check(b))
			{
				continue;
			}
			if(find_fa(a)!=find_fa(b))
			{
				fa[find_fa(a)]=find_fa(b);
				tree--;
			}
			if(tree==1)
			{
				flag=false;
				break;
			}
		}
		if(flag)
		{
			printf("NO\n");
		}
		else
		{
			printf("YES\n");
		}
		int close;
		scanf("%d",&close);
		s[++cnt]=close;
	}
	return 0;
}
2024/4/9 22:11
加载中...