HDU-2094 产生冠军
题中先用并查集判定是否所有点都有联系,即能够拼成一个连通的无向图。 再判定入度为零的点是否为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 产生冠军相关推荐
- HDU hdu 2094 产生冠军 拓扑排序 判定环
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2094 对于是否有环,是通过一个N(节点数)的循环来判定.检查并更新每个节点的入度数. 每找到一个入度唯 ...
- 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 Submissi ...
- hdu 2094 “产生冠军“
产生冠军 时间限制:1000/1000 MS(Java/其他) 内存限制:32768/32768 K (Java/其他) 提交总数:38623 已接受提交:17522 问题描述 有一群人,打乒乓球比赛 ...
- 【ACM】HDU.2094 产生冠军 【STL-map】
题目链接 问题分析: 题意: rule1:胜负关系具有传递性 rule2:胜负关系形成闭环时,则闭环内的都不可能是冠军 所以大胆猜测,只要输过一次的人就不可能是冠军,统计最后没有输过的人数,若为1,则 ...
- HDU 2094 产生冠军
Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C. 如 ...
- HDU 2094产生冠军
原文链接:http://www.cnblogs.com/FCWORLD/archive/2011/04/07/2007468.html Sample Input 3 Alice Bob Smith J ...
- 杭电ACM 2094 产生冠军——C语言)
Hdu 2094 产生冠军 题目 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之 ...
- HDU 2094:产生冠军(拓扑排序)
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 杭电2094产生冠军
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
最新文章
- 判断某个点是否在不规则图形内
- 掌握这些方法,后台设计变得简单起来
- (转)EF三种编程方式详细图文教程(C#+EF)之Database First
- docker运行dubbo-admin
- 细胞自动机 c语言程序,Processing精彩例程之细胞自动机
- 表达式,语句,变量与宏的一些概念
- asp.net执行js出现“已终止操作”的解决方法
- 《Word排版艺术》
- JavaScript高级程序设计 第4版
- 计算机楼综合布线设计图,现代综合大楼综合布线设计方案
- Android使用TextToSpeech(TTS)实现文字转语音合成播放
- java编程马拉松比赛_腾讯编程马拉松
- 软件测试基本技术-XMind思维导图(全)
- Python房贷计算器等额本息
- 搭建智慧农业物联网云平台——基于阿里云物联网平台构建
- js字符串格式化方法format
- android系统优化启动时间(Google官方推荐)
- 点云视窗类CloudViewer
- idea java反编译_idea的java反编译插件
- 【分解质因数】合数的质因数分解