原文链接:我的个人博客
原题链接
PAT 1134 Vertex Cover (25分) (25分)
考点
图论
思路
为了判断的方便,将边根据输入的顺序进行编号。用e存放每个顶点相关的边。在每一次查询中,用set容器存放每次查询的所有节点相关的边。最后只要判断set容器的大小和该图总边数的大小是否相同即可得出每次查询的结果。
代码
#include <bits/stdc++.h>
using namespace std;
int n,m,Nq;
vector<int>e[10010];
bool visit[10010];
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
e[a].push_back(i);
e[b].push_back(i);
}
cin>>Nq;
for(int i=0;i<Nq;i++){
set<int>s;
int k;
cin>>k;
for(int j=0;j<k;j++){
int tmp;
cin>>tmp;
s.insert(e[tmp].begin(),e[tmp].end());
}
if(s.size()==m)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}