产生冠军

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

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

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char c[1001][1001];
char s[1001][1001];
int i,n,m,j,k,l;
int main()
{while(scanf("%d",&n),n){for(i=0;i<n;i++)scanf("%s%s",c[i],s[i]);int sum=0;k=n;for(i=0;i<n;i++)strcpy(c[k++],s[i]);//把所有的运动员都存起来 // for(i=0;i<2*n;i++)调试不是很会 //   printf("%s\n",c[i]);输出确定一下 for(i=0;i<2*n;i++){for(j=i+1;j<2*n;j++)if(strcmp(c[i],c[j])==0)break;if(j==2*n)sum++;}//找出一共有多少不同的运动员 //    printf("%d\n",sum);int gs=0;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(strcmp(s[i],s[j])==0)break;if(j==n)gs++;}//计算出有多少不同的输了的运动员 //   printf("%d\n",gs);if(sum-gs==1)//如果参加比赛的运动员比输了的运动员多一个  则   肯定能确定的排名,多的那一个就是冠军 printf("Yes\n");else//如果不是,则不能确定排名,此方法还可以找到最后是谁赢了. printf("No\n");}return 0;
}
怎么样才算得到冠军了呢,详情请看代码。还有一种思想,刚学了并查集,考虑着是不是并查集也可以做,就是如果A赢了B,则A是B的父节点,依次计算,如果到最后,只有一个根节点等于本省,那么就产生了冠军.但是有问题就是如果A赢了B,B又赢了C,C又赢了A,那么到底谁是根节点.请大神赐教,若果有大神能按这种思路解出来,请分享一下.

杭电2094产生冠军相关推荐

  1. 杭电2094 产生冠军

    题目描述: 一群人打乒乓球,两两PK,每两人之间最多打一场比赛,规则如下: 如果A打败了B,B又打败了C,而A与C之间没有比赛,那么就认为A一定能打败C. 如果A打败了B,B又打败了C,而C又打败了A ...

  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. MySQL · B+树并发控制机制的前世今生
  2. 浅析I/O处理过程与存储性能的关系
  3. java swing removeall_Java Swing Combobox removeAllItems调用ItemStateChange...
  4. 无工具arp病毒检测
  5. 机器人学习--室内定位方法综述
  6. [BZOJ4320][ShangHai2006]Homework(根号分治+并查集)
  7. c语言编2048,c语言编写的2048游戏代码,大家可以参考一下这些
  8. 双目估计方法_教你提高双目立体视觉系统的精度!
  9. 修改oracle 安裝參數,oracle 安裝相關參數設定
  10. xrd精修教程_XRD精修干货和三元材料的XRD精修实例
  11. zigbee 4:协调器/路由器/终端 建立/加入 网络
  12. 快速非支配排序 python版
  13. 15 个常用的python 开源框架
  14. 苹果系统设置http代理ip教程
  15. 如何选择日志审计系统
  16. python 通达信板块_[python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上...
  17. git安装及github配置
  18. java版我的世界有溺尸_我的世界溺尸怎么生成
  19. 日本鲭川CRAFSIS进军中国市场 无界眼镜独家代理
  20. python需要依赖注入吗_是否需要使用依赖注入容器?

热门文章

  1. 第一次作业:深入源码分析进程模型
  2. linux安装操作系统以及配置ip地址
  3. 面试题:判断链表是否存在环
  4. JProfiler 解决 Java 服务器的性能跟踪
  5. 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno...
  6. Visual Studio 2015 前端开发工作流
  7. Linux平台下Ntop流量监测安装,并实现Netflow全过程
  8. vc6.0 radio控件多个分组
  9. 第二十单元 计划任务crond服务
  10. 2016年1月20日总结