题目

题意:给定图的边信息,问待查询顶点集是否是图的顶点覆盖集,顶点覆盖集:图中所有的边至少一个顶点在顶点集中。
tip:将待查顶点集所有连边全部去掉,在判断是否还有边即可

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector<int>s[10003];
int main() {
	int n,m;
	cin>>n>>m;
	for(int i=0; i<m; ++i) {
		int a,b;
		cin>>a>>b;
		s[a].push_back(b);
		s[b].push_back(a);//建图
	}
	int k;
	cin>>k;
	for(int i=0; i<k; ++i) {
		int t;
		cin>>t;
		vector<int>temp[10003]=s;
		for(int l=0; l<t; ++l) {
			int a;
			cin>>a;
			for(int j=0; j<temp[a].size(); ++j) {
				auto it=find(temp[temp[a][j]].begin(),temp[temp[a][j]].end(),a);
				temp[temp[a][j]].erase(it);//删边
			}
			temp[a].clear();//删边
		}
		int flag=0;
		for(int j=0; j<n; ++j)
			if(temp[j].size()) {
				flag=1;
				cout<<"No\n";
				break;
			}
		if(!flag)
			cout<<"Yes\n";
	}
	return 0;
}