题目描述:

有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。
球赛的规则如下:
如果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 B ,只需使 isRoot[B] = 0,最后看还有多少isRoot为1的即可
 #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <algorithm>
#define MAX 1002
#define NAMEM 102 char name[MAX][NAMEM];
int isRoot[MAX];
char buf1[NAMEM];
char buf2[NAMEM]; int main(int argc, char const *argv[])
{
//freopen("input.txt","r",stdin);
int n;
scanf("%d",&n);
while(n != ) {
for(int i = ; i < n; i++) {
isRoot[i] = ;
} int peopleCnt = ;
for(int i = ; i < n; i++) {
scanf("%s %s",buf1,buf2);
bool find1 = false, find2 = false;
for(int j = ; j < peopleCnt; j++) {
if(strcmp(buf1,name[j]) == ) {
find1 = true;
}
if(strcmp(buf2,name[j]) == ) {
isRoot[j] = ;
find2 = true;
}
}
if(!find1) {
strcpy(name[peopleCnt],buf1);
name[peopleCnt][strlen(buf1)] = '\0';
peopleCnt++;
}
if(!find2) {
strcpy(name[peopleCnt],buf2);
name[peopleCnt][strlen(buf2)] = '\0';
isRoot[peopleCnt] = ;
peopleCnt++;
}
}
int res = ;
for(int i = ; i < peopleCnt; i++) {
res += isRoot[i];
}
if(res == ) {
printf("%s\n","Yes");
}
else {
printf("%s\n", "No");
}
scanf("%d",&n);
}
return ;
}

最新文章

  1. gulp系列文章一 fis vs grunt vs gulp,为什么要是gulp呢?
  2. 叶金荣:MySQL通用优化技巧
  3. 湖南师范大学第五届大学生计算机程序设计竞赛--G--修路
  4. JavaScript ES7 中使用 async/await 解决回调函数嵌套问题
  5. CF Rook, Bishop and King
  6. js 常用的一些函数
  7. 构建安全的Xml Web Service系列之wse之证书存储位置
  8. UEFI主板GPT方式安装CentOS6.4
  9. 要重定向 IO 流,Process 对象必须将 UseShellExecute 属性设置为 False。
  10. .net使用websocket
  11. idea 未实现接口红线提示,重复代码波浪线提示,自动换行,控制台输出内容自动换行
  12. 胡思乱想 &amp; 胡言乱语
  13. MACOS root密码忘了怎么办?
  14. imperva 非交互式导入导出配置
  15. Compiling a kernel module for the raspberry pi 2 via Ubuntu host
  16. 如何使用fiddller跟踪windows进程发送的请求20140911
  17. Sprint第一个冲刺(第五天)
  18. ZOJ Monthly, January 2019 Little Sub and his Geometry Problem 【推导 + 双指针】
  19. Java高级架构师(一)第32节:Nginx的进程结构、基本配置
  20. [转]GStreamer资料(摄像头采集,视频保存,远程监控)DVR

热门文章

  1. 安装MySQLdb出现HAVE_WCSCOLL重定义问题的解决方法
  2. linux 删除文件后空间没有释放的解决办法
  3. Perl 输出内容到 excel
  4. Django 表增加外键
  5. SAP产品的Field Extensibility
  6. 程序windows上可以上传附件,部署到 linux服务器后出现 “上传目录 不可写” 怎么解决?
  7. Codeforces Round #316 (Div. 2) C Replacement 扫描法
  8. Kubernetes介绍与特性
  9. SayLove微信小程序
  10. ftl-server静态资源服务器