1149 Dangerous Goods Packaging
阿新 • • 發佈:2018-12-20
這題如果不用STL很麻煩,而且陣列開的太大很容超記憶體,因此用map和vector十分方便,邏輯也很清楚,基本沒有什麼坑。
#include <stdio.h>
#include<string.h>
#include <map>
#include <vector>
using namespace std;
int main()
{
int n,m;
scanf("%d%d",&n,&m);
map<int,vector<int> >mp;
int x,y;
for(int i=0;i<n; i++){
scanf("%d%d",&x,&y);
mp[x].push_back(y);
mp[y].push_back(x);
}
int k;
bool isIN[100000];
for(int i=0;i<m;i++){
memset(isIN,false,sizeof(isIN));
scanf("%d",&k);
int th[k];
for(int j=0;j<k;j++){
scanf("%d",&th[j]);
isIN[th[j]] = true;
}
bool BAN = false ;
for(int j=0;j<k;j++){
for(int s=0;s<mp[th[j]].size();s++){
int temp = mp[th[j]][s];
if(isIN[temp] == true){
BAN = true;
break;
}
}
if(BAN == true)break;
}
if(BAN)printf("No\n");
else printf("Yes\n");
}
return 0;
}