hdoj 2094 产生冠军

来源:互联网 发布:孙宇 easyui 源码下载 编辑:程序博客网 时间:2024/05/14 20:40

 

考察点:  set<string>的应用

 

 

题目大意:两两比赛,输入值a,b,即为a赢了b,对于所有的ab组,求出是否能够产生冠军。

如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。

 

 

题目解析: 如果能够产生冠军,则应该有且只有一个胜者,

此时我们可以将所有的参赛队员放入set<string> sum,将所有的失败者放入set<string> fail,

如果最终sum中的个数比fail中的个数多1,即能够产生冠军,输出yes,否则不能产生冠军,输出no

 

 

AC代码:

#include <iostream>      //使用set<string>应调用的头文件#include <stdio.h>#include <string.h>#include <set>            //使用set<string>应调用的头文件using namespace std;int main(){    int n;    set<string> sum;    set<string> fail;    char str1[1010],str2[1010];    while(scanf("%d",&n),n)    {        for(int i=1;i<=n;i++)        {            scanf("%s%s",str1,str2);            sum.insert(str1);            sum.insert(str2);       //   将失败者和胜者都放入sum            fail.insert(str2);      //   将失败者放入fail        }        if(sum.size()-fail.size()==1)   //   判断能否产生冠军            printf("Yes\n");        else printf("No\n");                sum.clear();        fail.clear();                //释放集合占用的空间    }        return 0;}


 

0 0
原创粉丝点击