PAT 甲级 1134 Vertex Cover (25 分)

思路:

遍历每一条边,两个结点至少要有一个在所给结点中

代码:

#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;
vector<pair<int,int>> v;
unordered_map<int,bool> mp;
int main(){
	int n,m,k;
	scanf("%d%d",&n,&m);	
	for(int i=0;i<m;i++){
		int v1,v2;
		scanf("%d%d",&v1,&v2);
		v.push_back(make_pair(v1,v2));
	}
	scanf("%d",&k);
	for(int i=0;i<k;i++){
		int num,j;
		scanf("%d",&num);
		for(j=0;j<num;j++){
			int v;
			scanf("%d",&v);
			mp[v]=true;
		}
		for(j=0;j<m;j++)
			if(!mp[v[j].first]&&!mp[v[j].second])
				break;
		j==m?printf("Yes\n"):printf("No\n");
		mp.clear();
	}
	return 0;
}
posted @ 2019-08-17 10:39  YuhanのBlog  阅读(43)  评论(0编辑  收藏  举报