HDU 产生冠军 2094
解题思路:这题重在分析,可能你知道的越多,这题想得越多,什么并查集,什么有向图等。
事实是,我们会发现,只要找到一个,并且仅有一个的入度为0的点,说明可以找出
冠军。若入度为0的点一个都没有,说明每个选手都是输过的;若入度为0的点超过一个,
说明多个对应的入度为0的点的关系是不确定的,也不能产生冠军。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 1005
char s1[N], s2[N], str[N][N];
int vis[N], cnt; int Change(char s[])
{
int i;
for(i = ; i < cnt; i++)
{
//如果此字符串之前出现过,直接返回之间对应的标号。
if(strcmp(str[i], s) == ) return i;
}
//如果此字符串之前没有出现过,则先将其存入字符数组中。
if(i == cnt) strcpy(str[cnt++], s);
return i;
}
int main()
{
int n;
while(~scanf("%d", &n) && n)
{
memset(vis, , sizeof(vis));//注意初始化
cnt = ;
while(n--)
{
scanf("%s %s", s1, s2);
int p1 = Change(s1);
int p2 = Change(s2);
vis[p2] = ;
}
int cnt1 = ;
for(int i = ; i < cnt; i ++) //这里的<符号是不能为<=符号的
{
if(vis[i] == ) cnt1 ++; //如果出现入度为0的,加1
//printf("vis[%d] = %d\n", i, vis[i]); //打印出来有利于debug
if(cnt1 > ) break;
}
if(cnt1 == ) printf("Yes\n"); //有且只有一个入度为0的,说明找出冠军。
else printf("No\n");
}
return ;
}
HDU 产生冠军 2094的更多相关文章
- hdu 2094 产生冠军
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2094 产生冠军 Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比 ...
- 题解报告:hdu 2094 产生冠军
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2094 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打 ...
- [HDU] 2094 产生冠军(拓扑排序+map)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2094 注意每组数据处理前,map要清空. #include<cstdio> #includ ...
- HDU 2094 产生冠军 (map容器)
title: 产生冠军 杭电 2094 tags: [acm,stl] 题目链接 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则 ...
- hdu 2094 产生冠军(拓扑排序)
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU 2094 产生冠军(半拓扑排序+map)
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- hdu 2094 产生冠军(STL,set)
题目 //把所有的出现的名字开始默认都为冠军(1),然后输了的置为0,表示不为冠军,最后统计不为0的, //当有且只有一个不为0的,这个就为冠军,否则,不能产生冠军. //以上思路来自别人的博客.. ...
- [HDU] 2094 产生冠军(拓扑排序+map)
产生冠军 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- HDU 2094:产生冠军(拓扑排序)
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
随机推荐
- POJ 2028
#include <iostream> #define MAXN 200 using namespace std; int mark[MAXN]; int main() { //freop ...
- POJ 1466
#include<iostream> #include<stdio.h> #define MAXN 505 using namespace std; int edge[MAXN ...
- [你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望
发布日期:2009.05.22 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文开始,将以& ...
- spring_150803_service
实体类: package com.spring.model; public class DogPet { private int id; private String name; private in ...
- sql 数据库换行
制表符 CHAR(9) 换行符 CHAR(10) 回车 CHAR(13)
- IOS中延时执行的几种方式的比较
本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...
- TestDirector创建域或工程
一.打开TestDirector 1.打开TestDirector,进入如下页面 点击左上角"Site Administrator"进入 2.在输入框里输入正确的Site Admi ...
- Box2d学习
Box2d 学习 . Testbed 项目: Testbed 是 Box2d 源码里包含的一个例子程序.Testbed 封装了界面显示.游戏循环等部分的代码.添加新的例子的时候,只需要关注与 Box ...
- DB2_SQL_常用知识点&实践
DB2_SQL_常用知识点&实践 一.删除表中的数据(delete或truncate) 1 truncate table T_USER immediate; 说明:Truncate是一个能够快 ...
- Linux系统管道命令符
管道命令符“|”的作用是将前一个命令的标准输出作为后一个命令的标准输入,格式为“命令A | 命令B” 以下实例中,通过grep命令搜索关键字“/sbin/nologin”在/etc/passwd中查找 ...