#include<bits/stdc++.h>
using namespace std;
vector<int>v[10003];
bool bok[10003];
int main(){
int n,m,q;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int s,e;
scanf("%d%d",&s,&e);
v[s].push_back(e);
v[e].push_back(s);
}
scanf("%d",&q);
while(q--){
int p;
scanf("%d",&p);
int sum=0;
for(int i=1;i<=p;i++){
int tmp;
scanf("%d",&tmp);
for(int j=0;j<v[tmp].size();j++){
if(!bok[v[tmp][j]])sum++;
}
bok[tmp]=1;
}
if(sum==(m))puts("Yes");
else puts("No");
memset(bok,0,sizeof(bok));
}
return 0;
}
问给的点集是否覆盖所有边
枚举下计数即可
处理一个标记一个点
那么当枚举后面的点的边时 就不会处理重复的边了
邻接矩阵存边