暴力,并查集。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int n=1e4+11;
int a,b,c,l,r,d,e,w,g[n],m[n];
vector<int>t[n];
vector<int>s[n];
int find(int x)
{
if(m[x]!=x) m[x]=find(m[x]);
return m[x];
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>a>>b;
for(int i=1;i<=b;i++)
{
cin>>l>>r;
t[l].push_back(r);
t[r].push_back(l);
}
cin>>d;
while(d--)
{
cin>>e;
for(int i=1;i<=a;i++)
{
s[i]=t[i];
g[i]=0;
m[i]=i;
}
for(int i=1;i<=e;i++)
{
cin>>l;
g[l]=1;
s[l].clear();
}
for(int i=1;i<=a;i++)
{
int gg=find(i);
for(int v:s[i])
{
if(g[v]==0)
{
//continue;
int ff=find(v);
if(ff!=gg)
{
m[ff]=gg;
}
}
}
}
int an=0;
for(int i=1;i<=a;i++)
{
if(g[i]==0&&m[i]!=i)
{
an=1;
break;
}
}
if(an==0)
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
}