PAT 1090 危险品装箱 25分

66 阅读1分钟

1090 危险品装箱 - PAT (Basic Level) Practice (中文) (pintia.cn) image.png

对于 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;
}

image.png