题目描述:
一群人打乒乓球,两两PK,每两人之间最多打一场比赛,规则如下: 如果A打败了B,B又打败了C,而A与C之间没有比赛,那么就认为A一定能打败C。 如果A打败了B,B又打败了C,而C又打败了A,那么A、B、C都不可能成为冠军。 根据此规定,在经过了若干场比赛之后,确定是否已经产生了冠军。

输入:
输入含有多组测试数据,每组以一个整数n(n<1000)开头,后跟n对选手的比赛结果,比赛结果以一对选手名字(中间隔一空格)表示,前者战胜后者。n为0,表示输入结束。

输出:
对于每组输入,若能产生冠军,则输出“Yes”,否则输出“No”。

样例输入:
3
Alice Bob
Smith John
Alice Smith
5
a c
c d
d e
b e
a d
0

样例输出:
Yes
No

解题思路:
首先根据题意,如果说能够判断出有冠军产生,那一定只有一个冠军,他可以战胜所有人,也就是说,其他人都会被他打败,那么就可以理解为其他人的祖先都是他。第一反应就是并查集,可以开一个数组a[N],a[i]表示i号球员可以被战胜的最原始的那个人,最后如果所有球员的a[i]都是同一个人,那这个人就是冠军。
那么再换种角度,也就是说最后除冠军外所有人都被打败过,那只要统计失败者的人数和胜利者的人数,看看差值是否唯一就行了。如果不是1的话要么是有多个人没分出胜负,要么就是循环了不存在冠军。这么想来用set就很容易解决了,set有自动去重功能。

代码:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{int n;string a , b;set<string> v;//胜利者集合 set<string> l;//失败者集合 while(cin>>n && n){v.clear();l.clear();while(n--){cin >> a >> b;v.insert(a);v.insert(b);l.insert(b);}if(v.size()-l.size() == 1)cout << "Yes" << endl;elsecout << "No" << endl;}return 0;
}

杭电2094 产生冠军相关推荐

  1. 杭电2094产生冠军

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

  2. 杭电2094--产生冠军(拓扑排序)

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

  3. HDU 2094 产生冠军 (map容器)

    title: 产生冠军 杭电 2094 tags: [acm,stl] 题目链接 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则 ...

  4. 杭电ACM 2094 产生冠军——C语言)

    Hdu 2094 产生冠军 题目 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之 ...

  5. HDU杭电OJ经典100题2000-2099_Java版详细题解(持续更新)

    今年寒假打算用Java把杭电2000-2099全部AC(现在持续更新),如下是题目链接,之后是我的题解,全部做完后我会把所有AC的题解打包上传的 题号 题名 题号 题名 2000 ASCII码排序 2 ...

  6. Datawhale来杭电啦!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale线下 主办:杭电计算机学院,人工智能学院,创业学院 杭州电子科技大学(HDU) ...

  7. 2020杭电计算机考研经验帖

    一年多的考研时光落下帷幕,成功上岸成为杭电的一员,记得去年也是在论坛上看到学长学姐的经验帖,从中收获了很多,希望我的这篇经验帖能给今年考研的学弟学妹们带来一定的帮助. 按照惯例,先说一下我的考研情况. ...

  8. 杭电oj 1426 Sudoku Killer(深度优先搜索 回溯)

    Sudoku KillerTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  9. 【HDU100】杭电入门一百道 C++ 全 题 解

    " Ctrl AC!一起 AC!" 题目集合链接:HDU2000-2099http://acm.hdu.edu.cn/listproblem.php?vol=11 前言 1. 好像 ...

最新文章

  1. 2022-2028年中国数据中台行业深度调研及投资前景预测报告(全卷)
  2. 路由及路由器工作原理深入解析3:路由与port
  3. 如何提取cocos iOS应用程序APP与游戏安装包里的资源与文件
  4. Running Nutch in Eclipse
  5. firefox 接受post 不完整_HTTP中GET与POST的区别,99 %的人都理解错了
  6. 行政区域村级划分数据库_最新行政区划代码省市区三级 乡镇街道四级 村五级 数据库(2020年11月版 )...
  7. 浙大研究生hadoop工作分享
  8. c语言 有关文件读/写函数 详解
  9. 计算机里怎么添加桌面,电脑上怎么把我的电脑添加到桌面上
  10. 基于springboot的打卡签到
  11. plot指定线段形状和颜色_形状和颜色背后的心理学
  12. M1 mac外接显示器休眠后又失败
  13. 云计算和计算机应用的区别,普适计算与云计算的区别
  14. 彩票股票金融与运气之研究(二)-飘渺的希望
  15. 噩梦射手(SurvivalShooter)教程(八)
  16. YOLOv3源码解析2-数据预处理Dataset()
  17. java excel 设置列为日期,POI - 如何将单元格值设置为日期并应用默认Excel日期格式?...
  18. Word~Word修改行间距磅值
  19. 十七、主餐 《西敏小要理问答》
  20. hud Watch The Movie

热门文章

  1. 循环语句:for 语句详解
  2. Anaconda,tensorflow,keras安装过程以及遇到的问题和解决方案
  3. 《计算机操作系统(计算机)》
  4. 牛客网sql练习笔记(二)
  5. SQL语句操作练习(一)
  6. HTML绘制七巧板,如何使用HTML5 CSS3制作简单七巧板
  7. form表单同时提交带文本和图片的数据
  8. 串口/COM口、USB、RS232、RS422、RS485的区别
  9. 设置elment ui plus 的el table的边框线
  10. Letsencrypt简单教程调整