产生冠军

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

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

问题链接:HDU2094 产生冠军。

问题简述:参见上文。

问题分析

  比赛中互有胜负,将所有人放入一个集合中,输的人放入另外一个集合中。只有唯一1个人没有输时,才产生冠军。

程序说明

  程序中,使用STL的集合类来实现。

  代码不够简洁,追加了一个版本。

AC的C++语言程序如下:

/* HDU2094 产生冠军 */#include <iostream>
#include <set>using namespace std;int main()
{int n;while(cin >> n && n != 0) {string winner, loser;set<string> all, lose;while(n--) {cin >> winner >> loser;all.insert(winner);all.insert(loser);lose.insert(loser);}cout << (all.size() - lose.size() == 1 ? "Yes" : "No") << endl;}return 0;
}

AC的C++语言程序如下:

/* HDU2094 产生冠军 */#include <iostream>
#include <string>
#include <set>using namespace std;int main()
{int n;set<string> all, lose;string Winner, loser;while(cin >> n && n != 0) {all.clear();lose.clear();while(n--) {cin >> Winner >> loser;all.insert(Winner);all.insert(loser);lose.insert(loser);}// 只有一人没有输,才有冠军if(all.size() - lose.size() == 1)cout << "Yes" << endl;elsecout << "No" << endl;}return 0;
}

HDU2094 产生冠军【set】相关推荐

  1. HDU2094 产生冠军

    产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. hdu2094产生冠军

    http://acm.hdu.edu.cn/showproblem.php?pid=2094 其实这题也不算是拓扑排序了 只需要判断最开始入度是否唯一就可以了 如果是0  肯定有环了 不是0 会有多个 ...

  3. HDU-2094 产生冠军

    题中先用并查集判定是否所有点都有联系,即能够拼成一个连通的无向图. 再判定入度为零的点是否为1即可. 代码如下: #include <stdio.h> #include <strin ...

  4. 【ACM】HDU.2094 产生冠军 【STL-map】

    题目链接 问题分析: 题意: rule1:胜负关系具有传递性 rule2:胜负关系形成闭环时,则闭环内的都不可能是冠军 所以大胆猜测,只要输过一次的人就不可能是冠军,统计最后没有输过的人数,若为1,则 ...

  5. CCF认证训练行动路线图

    通过CCF认证的训练题选自三个方面,一是CCF认证试题,二是使用北大百练的练习题等等,三是ACM-ICPC的练习题. CCF认证的试题是必须练习的,通过CCF试题的练习有助于了解试题风格特点.然而CC ...

  6. c语言折半查找法找字符,C语言折半查找法练习题冒泡排序

    MongoDB管理工具的插件系统 MongoDB管理工具  MongoCola的开发已经进入第三个年头了. 官方对于C#驱动的投入不够导致了很多东西都必须自己实现,但是不管怎么样,工具现在已经很强大了 ...

  7. TYUT-A2专题题解

    TYUT-A2专题题解 循序渐进,基础练起. 01递推与组合 HDU1210 Eddy's 洗牌问题[递推函数+模拟] - 海岛Blog - CSDN博客 HDU2044 一只小蜜蜂...[递推] - ...

  8. ICPC程序设计题解书籍系列之九:罗勇军《算法竞赛入门到进阶》

    罗书<算法竞赛入门到进阶>题目一览 第1章 算法竞赛概述 HDU1000 HDU1089-HDU1096 A+B for Input-Output Practice (I)-(VIII)( ...

  9. TYUT-A专题题解(一)

    TYUT-A专题题解(一) 01A Ad Hoc UVA353 LA5247 Pesky Palindromes[回文] - 海岛Blog - CSDN博客 UVA947 Master Mind He ...

最新文章

  1. ARKit应用超300万次安装,排第一的是一款养成游戏
  2. 用InstallShield 打包工具 打 Win32 程序 (depends.exe 用看程序都依赖了哪些dll)
  3. 量化策略研究员 - 工具篇
  4. php超市结算,超市物品结算简易程序代码
  5. zabbix中mysql连不上的排错_zabbix监控软件的使用排错
  6. 【OpenGL】OpenGL视图和模型变换中各变换发生顺序的思考
  7. andrew ng 机器学习笔记_所有笔记目录 | 数据分析 | 机器学习 | 深度学习等
  8. Linux入门-第四周
  9. uniapp本地开发小程序代码超过2M,不能预览和真机调试解决办法
  10. eclipse 装阿里规范模板
  11. 湖北汽车工业学院校园导游咨询与最短路径
  12. 定义一个交通工具(Vehicle)的类
  13. 多系统引导启动项详解和更改启动内核的方法
  14. iOS 开发:『Runtime』详解(二)Method Swizzling
  15. 【毕业设计】基于单片机的墨水屏阅读器(单词卡) - 物联网 嵌入式
  16. Java抽象类,接口练习之猫狗案例加入跳高功能分析及其代码实现
  17. java接口防刷_API 接口防刷
  18. makefile文件解释
  19. Java程序员必备的几款开发工具
  20. mysql lambda查询_MySQL高级查询和编程基础

热门文章

  1. ArcGIS制图表达Representation-规则和几何效果
  2. 在移动设备中创建ArcGIS API for JavaScript地图应用程序
  3. 手机格斗网游该如何避免延迟
  4. 用计算机弹假面骑士build,假面骑士build中只有资深粉丝才知道的梗第一弹
  5. html5画布作品,10个会让你惊叹不已的HTML5画布(CANVAS)技术应用演
  6. win10基于anaconda下的tensorflow2.0.0及cuda10.0、cudnn安装成功
  7. oracle中 initcpa,oracle  11g rman备份
  8. java 项目名命名规范_javaWeb项目命名规范
  9. kafka的c/c++高性能客户端librdkafka简介/使用librdkafka的C++接口实现简单的生产者和消费者
  10. Qt之HTTP之模仿迅雷——根据URL获取文件信息(上)