评测记录
#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;
}