博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1308 Is It A Tree?(并查集)
阅读量:4954 次
发布时间:2019-06-12

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

注:这道题思路很乱,先记下,日后理清

题意:给出一些节点,判断这些节点构成的是不是一棵树

思路:感觉很简单,但是思路又很乱,当时想的判断条件是:

1.入度不能大于1(树根为0,其他节点为1)

2.所有节点必须在一棵树中(判断所有节点是否在一棵树中)

3.在节点相连的时候,不能是同一棵树中的节点(否则会出现环或者入度为2的情况)

 

#include
#include
#include
using namespace std;int set[50000];int a[50000];int rootnum[50000];int set_find(int d){ if(set[d]<0) return d; return set[d]=set_find(set[d]);//这里不要忘了return(有的编译器可能是自动加上return,在vc中不会报错,运行结果也正确)}void join(int x,int y){ x=set_find(x); y=set_find(y); set[x]=y;}int main(){ int i; int m; int mcase=0; while(1) { bool ok=true; memset(set,-1,sizeof(set)); memset(rootnum,0,sizeof(rootnum)); i=0; m=0; scanf("%d%d",&a[i],&a[i+1]); m++;m++; mcase++; if(a[i]<0 &&a[i+1]<0) break; if(a[i]!=0 &&a[i+1]!=0) { if(set_find(a[i+1])!=set_find(a[i]))// 3. 连得时候不能是同一棵树中的两个节点相连(排除自己连自己) join(a[i+1],a[i]); else ok=false; rootnum[a[i+1]]++; i++;i++; while(scanf("%d%d",&a[i],&a[i+1])) { if(a[i]==0 &&a[i+1]==0)break; m++;m++; if(set_find(a[i])!=set_find(a[i+1]))// 3. 连得时候不能是同一棵树中的两个节点相连 { join(a[i+1],a[i]); } else ok=false; rootnum[a[i+1]]++; i++;i++; } } int root=set_find(a[0]); for(i=0;i
1||set_find(a[i])!=root)// 1.入度不能大于1 , 2.所有节点必须在一棵树中 { ok=false; break; } } if(ok) printf("Case %d is a tree.\n",mcase); else printf("Case %d is not a tree.\n",mcase); } return 0;}

 

转载于:https://www.cnblogs.com/bofengyu/p/4477413.html

你可能感兴趣的文章
机电行业如何进行信息化建设
查看>>
Windows Azure Platform Introduction (4) Windows Azure架构
查看>>
【转】chrome developer tool 调试技巧
查看>>
mahout运行测试与kmeans算法解析
查看>>
互相给一巴掌器
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>
HDU6409 没有兄弟的舞会
查看>>
2018 Multi-University Training Contest 10 - TeaTree
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6201 transaction transaction transaction
查看>>
HDU6203 ping ping ping
查看>>
《人人都是产品经理》书籍目录
查看>>
如何在git bash中运行mysql
查看>>
OO第三阶段总结
查看>>
构建之法阅读笔记02
查看>>
HEVC编码学习(一)HM配置
查看>>
DataTable和 DataRow的 区别与联系
查看>>
检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败
查看>>
mysql数据库中数据类型
查看>>