1149 Dangerous Goods Packaging
题目 tip:map+状态记录 题意: 给出n个相违规的物品,以及m组查询,m组查询中每中种查询含有k个物品,问这些物品是否能合法的放在一起 #include<iostream> #include<map> #include<vector> #include<algorithm> using namespace std; int main() { int n,m; cin>>n>>m; map<int ,vector<int>> ans;//违规名单 for(int i=0; i<n; ++i) { int a,b; cin>>a>>b; ans[a].push_back(b); ans[b].push_back(a); } for(int i=0; i<m; ++i) { int checked[100003]= {0};//当前查询序列中是否出现过违规物品 int k,flag=0; cin>>k; for(int j=0; j<k; ++j) { int num; cin>>num; if(checked[num]==-1)//若之前出现与当前产品相违规直接标记当前查询序列不合法 flag=1; if(ans.find(num)!=ans.end()) { for(auto it : ans[num]) { checked[it]=-1;//将于该产品违规的所有产品全标记为