hdu 2094 产生冠军

Posted pcdl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 2094 产生冠军相关的知识,希望对你有一定的参考价值。

产生冠军

技术图片

 

 思路:这道题,先读题分析,我们可以知道,为了产生冠军,会进行两两比赛,让我们寻找一种办法判断是否产生冠军,既然提到了方法,那么意味着,必有一个简便方法来判断是否有冠军,因为,两两发生比赛,一个人可能产生多场比赛,但是,我们换成一下思路,什么是冠军,冠军即使唯一没输过的人,所以,当全部人数-输掉的人数=1时,即产生了冠军。此时,分析到这里,我们也可以判断使用set容器,不录入重复。

代码:

#include<iostream>
#include<set>
#include<string>
using namespace std;

int main(){

    int n;
    while (cin >> n&&n){
        string a, b;
        set<string> s1, s2;
        for (int i = 0; i < n; i++){
            cin >> a >> b;
            s1.insert(a);
            s1.insert(b);
            s2.insert(b);
        }
        if (s1.size() - s2.size() == 1){
            cout << "Yes" << endl;
        }
        else{
            cout << "No" << endl;
        }
    }

    system("pause");
    return 0;
}

 

以上是关于hdu 2094 产生冠军的主要内容,如果未能解决你的问题,请参考以下文章

HDU2094 产生冠军

HDU 2094 产生冠军(set)

HDU 2094 产生冠军

题解报告:hdu 2094 产生冠军

HDU 2094 产生冠军

HDU 2094 产生冠军 (图论)