暴力,并查集。
#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;}}
}