学习资料
https://blog.csdn.net/wjheha/article/details/77940958
L2-025 分而治之
题目链接https://blog.csdn.net/hy971216/article/details/80961817#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
const int maxm = 10010;
struct node{
int x;
int y;
}edge[maxm];
int v[maxm];
int main()
{
int n,m,k,t,x,y,city,l,p,flag,i,j;
scanf("%d %d",&n,&m);
for(i=0;i<m;i++){
scanf("%d %d",&edge[i].x,&edge[i].y);
}
scanf("%d",&k);
for(i=0;i<k;i++){
map<int,int> m2;//map的使用不熟悉,定义为一个空的
scanf("%d",&t);
for(j=0;j<t;j++){
scanf("%d",&city);
m2[city]= 1;//map添加数据可以直接加进来,并且赋值吗?,这里并不是直接赋值的意思,而是判断是否相等
}
int j = 0;
for(j=0;j<m;j++){
if(m2[edge[j].x]!=1&&m2[edge[j].y]!=1){
printf("NO\n");
break;
}
}
if(j>=m){
printf("YES\n");
}
}
return 0;
}