版权声明:本文为博主原创文章。未经博主同意不得转载。

https://blog.csdn.net/shengweisong/article/details/34099151

做了一上午,最终ac了 wa了一次主要是忘了还有环!。!

 

主要是运用并查集知识。又复习了一次!!

思路:输入之后找能不能成环,成环就不是,其次还要推断是不是有两个父节点,假设有两个父节点也不是。之后就找相关的祖先就好了。

还要注意:假设仅仅有一个节点,也是树。假设有两个或多个根节点也不是树;假设没有根节点也不是

链接

pid=1325" rel="nofollow">http://acm.hdu.edu.cn/showproblem.php?pid=1325

代码

#include<stdio.h>
int fat[1000];
int father( int n ) //寻找祖先
{
if( fat[n] != n ) fat[n] = father(fat[n]);
return fat[n];
}
int main()
{
int i, j, n, m, a[1000], b[1000], v = 1;
while( 1 ){
for( i = 0; i < 1000; i ++ )
fat[i] = i;
int flag = 0;
scanf( "%d%d", &a[0], &b[0] );
if( a[0]< 0&&b[0]< 0 ) break;
fat[b[0]] = a[0];//由题意可知fat[b[i]] = a[i];
i = 1;
while( scanf("%d%d", &a[i], &b[i]), a[i]||b[i] ){
if( flag == 0 ){ //假设flag=1那就表明成环了,或者有两个父节点
if( fat[a[i]] == b[i] ){
flag = 1; //推断是不是成环
continue;
}
if( fat[b[i]] != b[i] ) {
flag = 1;//推断是不是有两个父节点
continue;
}
if( fat[a[i]]!= a[i] )
fat[a[i]] = father(a[i]);
fat[b[i]] = a[i];
}
else{
fat[b[i]] = a[i];
}
i++;
}
// for( j = 0; j < i; ++ j ) //以下四行没有必要,假设没有根节点。就是环(多亏了某仙鹤同学)
// if( fat[a[j]] == a[j] ) break;;
// if( i == j )
// flag = 1;
if( flag ){
printf( "Case %d is not a tree.\n", v++ );
continue;
}
else{
if( i == 1 ){ //假设仅仅有一组
printf( "Case %d is a tree.\n", v++ );
continue;
}
for( j = 1; j < i; ++ j ) //推断是不是有多个根节点
if( fat[a[j]] != fat[a[0]] ){
printf( "Case %d is not a tree.\n", v++ );
break;
}
if( j == i )
printf( "Case %d is a tree.\n", v++ );
}
}
return 0;
}

hdoj 1325 Is It A Tree? 【并查集】的更多相关文章

  1. Hdu.1325.Is It A Tree?(并查集)

    Is It A Tree? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  2. hdu 1325 Is It A Tree? 并查集

    Is It A Tree? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  3. Is It A Tree?(并查集)

    Is It A Tree? Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26002   Accepted: 8879 De ...

  4. CF109 C. Lucky Tree 并查集

    Petya loves lucky numbers. We all know that lucky numbers are the positive integers whose decimal re ...

  5. HDU 5606 tree 并查集

    tree 把每条边权是1的边断开,发现每个点离他最近的点个数就是他所在的连通块大小. 开一个并查集,每次读到边权是0的边就合并.最后Ans​i​​=size[findset(i)],size表示每个并 ...

  6. [Swust OJ 856]--Huge Tree(并查集)

    题目链接:http://acm.swust.edu.cn/problem/856/ Time limit(ms): 1000 Memory limit(kb): 10000 Description T ...

  7. Codeforces Round #363 (Div. 2)D. Fix a Tree(并查集)

    D. Fix a Tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  8. Is It A Tree?(并查集)(dfs也可以解决)

    Is It A Tree? Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submi ...

  9. tree(并查集)

    tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

随机推荐

  1. data方法也是模型类的连贯操作方法之一,

    data方法也是模型类的连贯操作方法之一,用于设置当前要操作的数据对象的值. 写操作 通常情况下我们都是通过create方法或者赋值的方式生成数据对象,然后写入数据库,例如: $Model = D(' ...

  2. RvmTranslator7.2

    1. RvmTranslator7.2 增加一个视图方块,方便视图切换; Download: https://github.com/eryar/RvmTranslator/releases/tag/7 ...

  3. 什么是 MIME TYPE

    首先,我们要了解浏览器是如何处理内容的.在浏览器中显示的内容有 HTML.有 XML.有 GIF.还有 Flash ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME T ...

  4. re 模块 (正则的使用)

    一.正则表达式 英文全称: Regular Expression. 简称 regex或者re.正则表达式是对字符串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤. 使用正则的优缺点 ...

  5. java基础温习 -- Thread

    启动线程两种方式: 1. 实现Runnable接口: 2. 继承Thread类. 选用:能使用接口,就不用从Thread类继承.    使用继承的方法不够灵活,从这个类继承了就不能从其他类继承: 实现 ...

  6. 关于不同数据库的连接配置(MySql和Oracle)

    mysql: driverClass=com.mysql.jdbc.Driver #在和mysql传递数据的过程中,使用unicode编码格式,并且字符集设置为utf-8,插入数据库防止中文乱码 ur ...

  7. springcloud(二):Eureka服务注册与发现

    Spring Cloud Netflix  该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix ...

  8. 在VisualSVN创建新的Repository

    1,右键-创建 2,(暂时还没明白这两个选项的区别,暂时先使用第一个) 3, 库名称 4,(也不懂具体含义, 先默认) 5, 权限问题 6, 在需要用到这个库的工作文件夹内点击右键: -SVN检出 7 ...

  9. spring boot 项目添加maven依赖时provided

    spring boot 项目是自带tomcat 的,但是我们有时候是需要把项目打包成war 然后放到独立的tomcat中运行的,这个时候我们就需要将它自带的tomcat给排除开,这时候我们就可以使用& ...

  10. Django中间件分析

    SessionMiddleware 浏览器会发送包含SESSION_COOKIE_NAME的的Cookie 中间件从django_session中按照SESSION_COOKIE_NAME取出存入的s ...