zoukankan      html  css  js  c++  java
  • HIDU 2094

    传送门:

    http://acm.hdu.edu.cn/showproblem.php?pid=2094

    产生冠军

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 21117    Accepted Submission(s): 9544


    Problem Description
    有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。
    球赛的规则如下:
    如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。
    如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。
    根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之后,确定是否已经实际上产生了冠军。
     
    Input
    输入含有一些选手群,每群选手都以一个整数n(n<1000)开头,后跟n对选手的比赛结果,比赛结果以一对选手名字(中间隔一空格)表示,前者战胜后者。如果n为0,则表示输入结束。
     
    Output
    对于每个选手群,若你判断出产生了冠军,则在一行中输出“Yes”,否则在一行中输出“No”。
     
    Sample Input
    3 Alice Bob Smith John Alice Smith 5 a c c d d e b e a d 0
     
    Sample Output
    Yes No
     
    Author
    qianneng
     
    Source
     
    分析:
    全部人只有冠军是没有输过的,其他人肯定输过,所以s1的大小必须比s2大1,才有冠军
     
    code:
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int main()
    {
        int n;
        set<string> s1;
        set<string> s2;
        while(~scanf("%d",&n))
        {
            if(n==0)
                break;
            s1.clear();
            s2.clear();
            string str1,str2;
            for(int i=0;i<n;i++)
            {
                cin>>str1>>str2;
                s1.insert(str1);
                s1.insert(str2);
                s2.insert(str2);
            }
            if(s1.size()-s2.size()==1)//全部人只有冠军是没有输过的,其他人肯定输过,所以s1的大小必须比s2大1,才有冠军
            {
                printf("Yes
    ");
            }else
            {
                printf("No
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    MySQL基础
    MySQL约束
    firefox插件hostadmin自由切换host
    ITerm2下使用ssh访问Linux
    web优化(一 前端)
    php类的魔术方法也就是带下划线的类方法介绍及应用
    数据库水平切分的实现原理(分库,分表,主从,集群,负载均衡)
    三年以上php开发经验常见面试题
    php海量架构
    一个高级PHP工程师所应该具备的(转自元如枫博客)
  • 原文地址:https://www.cnblogs.com/yinbiao/p/9307679.html
Copyright © 2011-2022 走看看