要求:给定一些不容的商品,再给定一些商品,判断这些商品是否可容;
方法:输入一个商品,即将他不能相容的商品标记出来,如果下次输入出现该商品则不相容。
代码:
#include<bits/stdc++.h>
using namespace std;
map<int,vector<int> >inc;
bool flag[100000];
int main()
{
//freopen("test.txt","r",stdin);
int N,M,K,i;
scanf("%d %d",&N,&M);
for(i=0;i<N;++i){
int a,b;
scanf("%d %d",&a,&b);
inc[a].push_back(b);
inc[b].push_back(a);
}
while(M--){
int k;
bool incom=0;
memset(flag,0,100000);
scanf("%d",&k);
for(i=0;i<k;++i){
int a;
scanf("%d",&a);
if(!incom){ //可以相容
if(flag[a])incom=1; //不能出现a
for(int j=0;j<inc[a].size();++j){ //不能出现所有与A不容的
flag[inc[a][j]]=1;
}
}
}
if(incom)printf("No\n");
else printf("Yes\n");
}
return 0;
}