I - 产生冠军

产生冠军

题目描述

有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。
球赛的规则如下:
如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。
如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。
根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之后,确定是否已经实际上产生了冠军。

Iutput

输入含有一些选手群,每群选手都以一个整数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


思路:

先用map存储各位选手们的名字,统计出现在代表输了比赛的右边的选手姓名的次数;最后有人出现在失败那边的次数为0,且这样的人只有一个,那么他就是冠军;
拓展解法:据说可以用拓扑排序,并查集来做


代码

#include <map>
#include <cstdio>
#include <string.h>
#include <algorithm>

using namespace std;

const int N = 1010;
int n;
char str1[110], str2[110];
int in[N];

int main()
{
    while (~scanf("%d", &n), n)
    {
        map<string, int>qu;
        memset (in, 0, sizeof(in));
        qu.clear();
        int cnt = 0;
        for (int i = 1; i <= n; ++i)
        {
            scanf("%s%s", str1, str2);
            if (qu[str1] == 0)
            {
                qu[str1] = ++cnt;
            }
            if (qu[str2] == 0)
            {
                qu[str2] = ++cnt;
            }
            in[qu[str2]]++;
        }
        int ans = 0;
        for (int i = 1; i <= cnt; ++i)
        {
            if (in[i] == 0)
            {
                ans++;
            }
        }
        if (ans >= 2 || ans == 0)
        {
            printf("No\n");
            continue;
        }
        printf("Yes\n");
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
比亚迪唐DM 2023款DM-i 冠军版 是一款豪华电动SUV,由比亚迪汽车生产制造。这款车型采用了先进的混合动力系统,融合了电动机和内燃机的优势,拥有出色的动力性能和节能环保的特点。 首先,比亚迪唐DM 2023款DM-i 冠军版配备了一台强大的涡轮增压发动机和一台高效的电动机。发动机产生的动力和电动机提供的扭矩相互协同工作,为车辆提供出色的加速和性能表现。此外,车辆还配备了一套智能能量回收系统,能够通过制动和减速过程中回收能量,提高能源利用效率。 其次,比亚迪唐DM 2023款DM-i 冠军版拥有出色的电池续航能力。车辆搭载了一组高容量的锂离子电池组,可提供远超同级别车型的续航里程。这意味着车主可以享受更长的驾驶里程,减少充电的频率。 此外,比亚迪唐DM 2023款DM-i 冠军版还配备了一系列先进的智能科技和安全配置。车辆配备了自动驾驶辅助功能,包括自适应巡航控制、智能泊车辅助等,提升驾驶的便利性和安全性。同时,车辆还配备了多项主动安全系统,如盲点监测、自动紧急制动等,保障车辆和乘客的安全。 最后,比亚迪唐DM 2023款DM-i 冠军版的内饰采用了豪华材质和先进科技。车内配备了一套智能娱乐系统,支持手机互联和导航功能,为乘客提供全方位的乘坐体验。座椅采用了舒适的材质,提供良好的乘坐舒适性和支撑性。 总的来说,比亚迪唐DM 2023款DM-i 冠军版是一款融合了动力性能、节能环保、智能科技和豪华配置的豪华电动SUV。无论是在驾驶性能还是舒适度方面,它都能提供卓越的表现。这款车型将为车主带来独特的驾驶体验和乘坐享受。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值