1090 危险品装箱 - PAT (Basic Level) Practice (中文) (pintia.cn)
对于 a[i] = 20001,mp[20001][0] = 20002,haxi[20002] 检查是否在箱子中,如果 haxi[20002] 的值为真(比如 1),flag 被设置为 1。
然后循环,此时 假设循环到了 a[i]=20002,mp[20002][0]=20001,haxi[20001]检查是否在箱子中,如果 haxi[20002] 的值为真(比如 1),flag 被设置为 1。
#include<bits/stdc++.h>
using namespace std;
map<int,vector<int>>mp;
int a[1005];
int main()
{
int n,m;cin>>n>>m;
for(int i=0;i<n;i++)
{
int a,b;cin>>a>>b;
mp[a].push_back(b);
mp[b].push_back(a);
}
while(m--)
{
bool flag=0;
map<int,int>haxi;
int k=0;cin>>k;
for(int i=0;i<k;i++)
{
cin>>a[i];
haxi[a[i]]=1;
}
for(int i=0;i<k;i++)
{
for(int j=0;j<mp[a[i]].size();j++)
{
if(haxi[mp[a[i]][j]])flag=1; //如果map的每一个元素都在哈希表里出现过的话
if(flag)break;
}
}
if(flag)cout<<"No"<<endl;
else cout<<"Yes"<<endl;
}
return 0;
}