PAT基础级-钻石段位样卷2-7-7 危险品装箱 (25 分)

集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里。比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸。

本题给定一张不相容物品的清单,需要你检查每一张集装箱货品清单,判断它们是否能装在同一只箱子里。

输入格式:

输入第一行给出两个正整数:N (≤) 是成对的不相容物品的对数;M (≤) 是集装箱货品清单的单数。

随后数据分两大块给出。第一块有 N 行,每行给出一对不相容的物品。第二块有 M 行,每行给出一箱货物的清单,格式如下:

K G[1] G[2] ... G[K]

其中 K (≤) 是物品件数,G[i] 是物品的编号。简单起见,每件物品用一个 5 位数的编号代表。两个数字之间用空格分隔。

输出格式:

对每箱货物清单,判断是否可以安全运输。如果没有不相容物品,则在一行中输出 Yes,否则输出 No

输入样例:

6 3
20001 20002
20003 20004
20005 20006
20003 20001
20005 20004
20004 20006
4 00001 20004 00002 20003
5 98823 20002 20003 20006 10010
3 12345 67890 23333

输出样例:

No
Yes
Yes
#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;
unordered_map<int,vector<int>> m;
bool no;
bool arr[100000];
bool contains(vector<int>& v){
    for(int i=0;i<v.size();i++)
        if(arr[v[i]]) return true;
    return false;
}
int main()
{
    int N,M,P,tmp_int;
    int a,b;
    cin>>N>>M;
    while(N--){
        cin>>a>>b;
        m[a].push_back(b);
        m[b].push_back(a);
    }
    while(M--){
        cin>>P;
        fill(arr,arr+100000,false);
        while(P--){
            cin>>tmp_int;
            arr[tmp_int]=true;
        }
        no=false;
        for(int i=0;i<100000;i++)
            if(arr[i]&&contains(m[i]))//滿足第一個條件
                no=true;
        if(no) cout<<"No"<<endl;
        else cout<<"Yes"<<endl;
    }
    system("pause");
    return 0;
}

原文地址:https://www.cnblogs.com/littlepage/p/11966814.html

时间: 2024-07-30 16:21:37

PAT基础级-钻石段位样卷2-7-7 危险品装箱 (25 分)的相关文章

PAT基础级-钻石段位样卷2-7-6 帅到没朋友 (20 分)

当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤),是已知朋友圈的个数:随后N行,每行首先给出一个正整数K(≤),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔:之后给出一个正整数M(≤),为待查询的人数:随后一行中列出M个待查询的ID,以空格分隔. 注意:没有朋友的人可以是根本没安装“朋友圈”,也可以是

PAT基础级-钻石段位样卷2-7-4 6翻了 (15 分)

“666”是一种网络用语,大概是表示某人很厉害.我们很佩服的意思.最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思.如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”! 本题就请你编写程序,将那些过时的.只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达. 输入格式: 输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母.数字和空格组成,以回车结束. 输出格式: 从左到右扫描输入的句子:如果句

PAT基础级-钻石段位样卷2-7-5 福到了 (15 分)

“福”字倒着贴,寓意“福到”.不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出.这里要处理的每个汉字是由一个 N × N 的网格组成的,网格中的元素或者为字符 @ 或者为空格.而倒过来的汉字所用的字符由裁判指定. 输入格式: 输入在第一行中给出倒过来的汉字所用的字符.以及网格的规模 N (不超过100的正整数),其间以 1 个空格分隔:随后 N 行,每行给出 N 个字符,或者为 @ 或者为空格. 输出格式: 输出倒置的网格,如样例所示.但是,如果这个字正过来倒过去是一样的,就先输出b

PAT基础级-钻石段位样卷2-7-2 吃鱼还是吃肉 (10 分)

  国家给出了 8 岁男宝宝的标准身高为 130 厘米.标准体重为 27 公斤:8 岁女宝宝的标准身高为 129 厘米.标准体重为 25 公斤. 现在你要根据小宝宝的身高体重,给出补充营养的建议. 输入格式: 输入在第一行给出一个不超过 10 的正整数 N,随后 N 行,每行给出一位宝宝的身体数据: 性别 身高 体重 其中性别是 1 表示男生,0 表示女生.身高和体重都是不超过 200 的正整数. 输出格式: 对于每一位宝宝,在一行中给出你的建议: 如果太矮了,输出:duo chi yu!(多吃

PAT基础级-钻石段位样卷2-7-3 大笨钟 (10 分)

微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉.不过由于笨钟自己作息也不是很规律,所以敲钟并不定时.一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数:如果过了整点,就敲下一个整点数.另外,虽然一天有24小时,钟却是只在后半天敲1~12下.例如在23:00敲钟,就是“当当当当当当当当当当当”,而到了23:01就会是“当当当当当当当当当当当当”.在午夜00:00到中午12:00期间(端点时间包括在内),笨钟是不敲的. 下面就请你写个程序,根

PAT - 基础 - 最大公约数和最小公倍数

题目: 本题要求两个给定正整数的最大公约数和最小公倍数. 输入格式: 输入在一行中给出2个正整数M和N(<=1000). 输出格式: 在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔. 输入样例: 511 292 输出样例: 73 2044 两种方法1.辗转相除法求最大公约数流程如下: 算法 #include<stdio.h> #include<stdlib.h> int main() { int M,N; scanf("%d%d",&

java 网络编程(二)----UDP基础级的示例

下面介绍UDP基础级的代码示例: 首先了解创建UDP传输的发送端的思路: 1.创建UDP的Socket服务.2.将要发送的数据封装到数据包中.3.通过UDP的socket服务将数据包发送出去.4.关闭socket服务. 而接收端的思想如下: 1.创建UDP的Socket服务.需要明确一个端口号.2.创建数据包,用于存储接收到的数据,方便用数据包对象的方法解析各种数据.3.使用socket服务的recive方法将接收到的数据存储到数据包中.4.通过数据包中的方法解析数据包中的数据.5.关闭资源.

Git基础级介绍

这篇随笔是在学习了廖雪峰老师的git教程之后写的总结,要看详细的基础级git介绍可以去http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 如果想看更加详细的git介绍,可以去我们的团队博客http://www.cnblogs.com/buaase/p/5066288.html 如果还想看更更加详细的git介绍,可以去百度云盘下载https://pan.baidu.com/s/1nvq

PAT乙级1085-----PAT单位排行 (25分)

1085 PAT单位排行 (25分) 输入样例: 10 A57908 85 Au B57908 54 LanX A37487 60 au T28374 67 CMU T32486 24 hypu A66734 92 cmu B76378 71 AU A47780 45 lanx A72809 100 pku A03274 45 hypu 输出样例: 5 1 cmu 192 2 1 au 192 3 3 pku 100 1 4 hypu 81 2 4 lanx 81 2 思路:(struct sc