题中先用并查集判定是否所有点都有联系,即能够拼成一个连通的无向图。 再判定入度为零的点是否为1即可。

代码如下:

#include <stdio.h>
#include <string.h>char name[2010][50];int cnt, N, dg[2010], hash[2010], set[2010];int find( char *n )
{int i;for( i= 0; i< cnt; ++i ){if( strcmp( n, name[i] )== 0 ){return i;}}strcpy( name[cnt], n );return cnt++;    // 在return的时候把cnt自增
}int find( int x )
{return set[x]= x== set[x]? x: find( set[x] );
}void merge( int x, int y )
{int a= find( x ), b= find( y );set[a]= b;
}int main(  )
{while( scanf( "%d", &N ), N ){char n1[50], n2[50];cnt= 0;int edge= 0;memset( dg, 0, sizeof( dg ) );memset( hash, 0 ,sizeof( hash ) );for( int i= 0; i< 2010; ++i ){set[i]= i;}for( int i= 1; i<= N; ++i ){scanf( "%s %s", n1, n2 );int a= find( n1 ), b= find( n2 );if( find( a )!= find( b ) ){merge( a, b );edge++;} dg[b]++;}if( edge!= cnt- 1 ){printf( "No\n" );continue;}int shit= 0;for( int i= 0; i< cnt; ++i ){if( dg[i]== 0 ){shit++;}}printf( shit== 1? "Yes\n": "No\n" );}
}

转载于:https://www.cnblogs.com/Lyush/archive/2011/07/17/2108593.html

HDU-2094 产生冠军相关推荐

  1. HDU hdu 2094 产生冠军 拓扑排序 判定环

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2094 对于是否有环,是通过一个N(节点数)的循环来判定.检查并更新每个节点的入度数. 每找到一个入度唯 ...

  2. HDU 2094 产生冠军 (map容器)

    title: 产生冠军 杭电 2094 tags: [acm,stl] 题目链接 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则 ...

  3. HDU 2094 产生冠军

    产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  4. hdu 2094 “产生冠军“

    产生冠军 时间限制:1000/1000 MS(Java/其他) 内存限制:32768/32768 K (Java/其他) 提交总数:38623 已接受提交:17522 问题描述 有一群人,打乒乓球比赛 ...

  5. 【ACM】HDU.2094 产生冠军 【STL-map】

    题目链接 问题分析: 题意: rule1:胜负关系具有传递性 rule2:胜负关系形成闭环时,则闭环内的都不可能是冠军 所以大胆猜测,只要输过一次的人就不可能是冠军,统计最后没有输过的人数,若为1,则 ...

  6. HDU 2094 产生冠军

    Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C. 如 ...

  7. HDU 2094产生冠军

    原文链接:http://www.cnblogs.com/FCWORLD/archive/2011/04/07/2007468.html Sample Input 3 Alice Bob Smith J ...

  8. 杭电ACM 2094 产生冠军——C语言)

    Hdu 2094 产生冠军 题目 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之 ...

  9. HDU 2094:产生冠军(拓扑排序)

    产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  10. 杭电2094产生冠军

    产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

最新文章

  1. 判断某个点是否在不规则图形内
  2. 掌握这些方法,后台设计变得简单起来
  3. (转)EF三种编程方式详细图文教程(C#+EF)之Database First
  4. docker运行dubbo-admin
  5. 细胞自动机 c语言程序,Processing精彩例程之细胞自动机
  6. 表达式,语句,变量与宏的一些概念
  7. asp.net执行js出现“已终止操作”的解决方法
  8. 《Word排版艺术》
  9. JavaScript高级程序设计 第4版
  10. 计算机楼综合布线设计图,现代综合大楼综合布线设计方案
  11. Android使用TextToSpeech(TTS)实现文字转语音合成播放
  12. java编程马拉松比赛_腾讯编程马拉松
  13. 软件测试基本技术-XMind思维导图(全)
  14. Python房贷计算器等额本息
  15. 搭建智慧农业物联网云平台——基于阿里云物联网平台构建
  16. js字符串格式化方法format
  17. android系统优化启动时间(Google官方推荐)
  18. 点云视窗类CloudViewer
  19. idea java反编译_idea的java反编译插件
  20. 【分解质因数】合数的质因数分解

热门文章

  1. C# VC HTTP POST GET(转)
  2. 2.6_Database Interface JDBC及驱动类型
  3. Hadoop2配置详解
  4. 开始学习python
  5. onbeforeunload与onunload事件(转)
  6. HTML 4.01 符号实体
  7. selector-UI元素状态伪类
  8. DeepEarth中的拖放行为(DragBehavior)
  9. IP头结构&其他解析
  10. linux端口监听命令