#include <iostream> #include <vector> #include <map> using namespace std; int main(){ int n,k,t1,t2; map<int,vector<int>> m; //建立int和vector数组的映射map scanf("%d%d",&n,&k); //输入"不相容"组数n和要查询的组数k for(int i=0;i<n;i++){ scanf("%d%d",&t1,&t2);//输入"不相容"的2个货物 m[t1].push_back(t2);//把一个货物t2放入map的key为t1对应的vector中 m[t2].push_back(t1);//把一个货物t1放入map的key为t2对应的vector中 } while(k--){ //输入3次即查询3次 int cnt,flag=0,a[100000]={0}; scanf("%d",&cnt); vector<int> v(cnt); for(int i=0;i<cnt;i++){ scanf("%d",&v[i]);//循环输入"不相容"的五位数 a[v[i]]=1;//将对应五位数为下标的数组元素设为1 } for(int i=0;i<v.size();i++) //例子中的size=cnt即一次查询的五位数个数 for(int j=0;j<m[ v[i] ].size();j++) //注意循环内次数为map的key为某五位数的value大小(vector大小) if( a[ m[v[i]] [j] ]==1 ) {//注:判断的是---v[i]为key的map对应的value(是一个vector数组)的第j个元素 flag=1; } printf("%s\n",flag?"No":"Yes"); } system("pause"); return 0; }