博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-2094 产生冠军
阅读量:5915 次
发布时间:2019-06-19

本文共 1079 字,大约阅读时间需要 3 分钟。

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

代码如下:

#include 
#include
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" ); }}

转载地址:http://iygpx.baihongyu.com/

你可能感兴趣的文章
RestTemplate设置通用header
查看>>
TRex 学习(2) ---- stateful (basic)
查看>>
[高并发Java 二] 多线程基础
查看>>
PHP源码目录结构
查看>>
Linux桌面虚拟化技术KVM介绍及其安装
查看>>
硬盘主引导记录详解
查看>>
用户与用户组管理
查看>>
CentOS 6.8 手工安装 Firefox
查看>>
【栈】POJ 1028 Web Navigation
查看>>
[文摘]JDK里的设计模式
查看>>
我的友情链接
查看>>
Ubuntu添加永久DNS配置
查看>>
hash 散列生成目录
查看>>
开通博客的第一天
查看>>
密码权限管理
查看>>
Hive(一):Hive的安装部署
查看>>
Tomcat9 多端口 多项目
查看>>
raid+lvm+quota 实现流程
查看>>
linux tomcat配置https
查看>>
史上最牛最详细的Linux教程 不看后悔终生!
查看>>