• P2256 一中校运会之百米跑


    一中校运会之百米跑

    题目背景

    在一大堆秀恩爱的 ** 之中,来不及秀恩爱的苏大学神踏着坚定(?)的步伐走向了 100 100 100 米跑的起点。这时苏大学神发现,百米赛跑的参赛同学实在是太多了,连体育老师也忙不过来。这时体育老师发现了身为体育委员的苏大学神,便来找他帮忙。

    可是苏大学神需要热身,不然跑到一半就会抽(筋)、于是他就找到了你。。。如果你帮助体育老师解决了问题,老师就会给你 5 5 5 个积分。

    题目描述

    假设一共有 N N N 2 ≤ N ≤ 2 × 1 0 4 2\leq N\leq 2\times 10^4 2N2×104)个参赛选手。(尼玛全校学生都没这么多吧)

    老师会告诉你这 N N N 个选手的名字。

    接着会告诉你 M M M 1 ≤ M ≤ 1 0 6 1\leq M\leq 10^6 1M106)句话,即告诉你学生 A 与学生 B 在同一个组里。

    如果学生 A 与学生 B 在同一组里,学生 B 与学生 C 也在同一组里,就说明学生 A 与学生 C 在同一组。

    然后老师会问你 K K K 1 ≤ K ≤ 1 0 6 1\leq K\leq 10^6 1K106)句话,即学生 X 和学生 Y 是否在同一组里。

    若是则输出 Yes.,否则输出 No.

    输入格式

    第一行输入 N N N M M M

    接下来 N N N 行输入每一个同学的名字。

    再往下 M M M 行每行输入两个名字,且保证这两个名字都在上面的 N N N 行中出现过,表示这两个参赛选手在同一个组里。

    再来输入 K K K

    接下来输入 K K K 个体育老师的询问。

    输出格式

    对于每一个体育老师的询问,输出 Yes.No.

    样例 #1

    样例输入 #1

    10 6
    Jack
    Mike
    ASDA
    Michel
    brabrabra
    HeHe
    HeHE
    papapa
    HeY
    Obama
    Jack Obama
    HeHe HeHE
    brabrabra HeHe
    Obama ASDA
    papapa Obama
    Obama HeHE
    3
    Mike Obama
    HeHE Jack
    papapa brabrabra
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    样例输出 #1

    No.
    Yes.
    Yes.
    
    • 1
    • 2
    • 3
    #include
    
    #include
    using namespace std;
    unordered_map<string,string> classmate;
    
    string find(string s){
    	if(classmate[s]!=s)classmate[s]=find(classmate[s]);
    	return classmate[s];
    } 
    
    signed main(){
    int n,m;cin>>n>>m;
    
    for(int i=1;i<=n;i++){
    	string s;cin>>s;
    	classmate[s]=s;
    }
    
    while(m--){
    	string classmate1,classmate2;
    	cin>>classmate1>>classmate2;
    	string t1=find(classmate1);
    	string t2=find(classmate2);
    	if(t1!=t2)classmate[t2]=t1;
    }
    
    int k;cin>>k;
    while(k--){
    	string classmate1,classmate2;
    	cin>>classmate1>>classmate2;
    	string t1=find(classmate1);
    	string t2=find(classmate2);
    	if(t1==t2)cout<<"Yes.\n";
    	else cout<<"No.\n";
    }
    
    return 0;
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
  • 相关阅读:
    【数据结构】堆(C语言)
    中部高标准农田建设大会将于2024年8月在郑州召开
    一、网络基础知识
    JavaScript ES6类的定义与继承
    计算机竞赛 基于深度学习的人脸专注度检测计算系统 - opencv python cnn
    Qt OpenGL(二十二)——Qt OpenGL 核心模式-VAO和VBO
    关于Java代码如何项目部署
    windows通过gitstats-master+gnuplot统计代码量
    vue 组件基础
    与MySQL的纠缠(卸载与安装)
  • 原文地址:https://blog.csdn.net/qq_39456436/article/details/138199656