当前位置: 首页 > news >正文

寒假集训题目集二A - 产生冠军

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

Output

Yes
No

题解

这道题看起来很复杂,其实只用想明白一点,一个比赛,参赛人总数减去输的人总数,那么就是赢的人,只要只有一个赢的人,那么就是用冠军,我们用stl库中的set可以很容易的解决这个问题。

#include<bits/stdc++.h>
using namespace std;

int main(){
	int t;
	cin >> t;
	while(t){
		getchar();
		string winner,loser;
		set<string>total,allLoser;
		while(t--){
			cin >> winner >> loser;
			total.insert(winner);
			total.insert(loser);
			allLoser.insert(loser);     
		}
		if(total.size() - allLoser.size() == 1) cout << "Yes" << endl;
		else cout << "No" << endl;
		cin >> t;
	}
	return 0;
}

相关文章:

  • 网站后台管理员做链接/steam交易链接在哪
  • 湖北建设厅官方网站/网站流量统计分析报告
  • 做墙绘一般在哪个网站/广告买卖网
  • 闵行区新闻网网站/手机app安装下载
  • 在线音乐网站开发php/网店如何推广自己的产品
  • 惠州网站模板建站/seo咨询服务
  • Spring5框架总结学习(从入门到进阶)-AOP
  • vim的常规操作
  • Exception in thread “main“ java.lang.NoClassDefFoundError
  • Android GB∕T 19056-2021 汽车行驶记录仪-定位性能测试
  • 央视纪录片货币910
  • PHP GET 和 POST 的区别面试
  • Linux【windows使用xshell连接本地虚拟机】【Mac使用terminal连接本地虚拟机】
  • 【LeetCode】1799. N 次操作后的最大分数和
  • git push踩坑记录【看注意事项】
  • 类美团外卖、骑手、类快递取餐柜、整合菜品供应商、前厅、后厨、配送、智能厨电设备的智慧餐饮业务
  • 占道摆摊经营监控报警系统 yolov5
  • URLLC超低时延解决方案和关键技术