题意:
输入正整数N和M(均不超过10000),分别表示N个结点和M条边。接着输入一个正整数K(<=100),接着输入N行数据,每行包括一个数字X表示集合大小,以及X个数字表示集合元素,如果M条边每条边的两个结点至少出现在集合里一次,那么这个集合就称作全覆盖,输出Yes,否则输出No。
AAAAAccepted code:
1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 set<int>s; 5 int a[10007],b[10007]; 6 int main(){ 7 ios::sync_with_stdio(false); 8 cin.tie(NULL); 9 cout.tie(NULL); 10 int n,m; 11 cin>>n>>m; 12 for(int i=1;i<=m;++i) 13 cin>>a[i]>>b[i]; 14 int k; 15 cin>>k; 16 for(int i=1;i<=k;++i){ 17 int x; 18 cin>>x; 19 s.clear(); 20 for(int j=1;j<=x;++j){ 21 int y; 22 cin>>y; 23 s.insert(y); 24 } 25 int flag=0; 26 for(int j=1;j<=m;++j) 27 if(!s.count(a[j])&&!s.count(b[j])) 28 flag=1; 29 if(!flag) 30 cout<<"Yes "; 31 else 32 cout<<"No "; 33 } 34 return 0; 35 }