POJ 1308 Is It A Tree?
来源:互联网 发布:apache 2.2.15 漏洞 编辑:程序博客网 时间:2024/06/06 02:45
注:这道题思路很乱,先记下,日后理清
题意:给出一些节点,判断这些节点构成的是不是一棵树
思路:感觉很简单,但是思路又很乱,当时想的判断条件是:
1.入度不能大于1(树根为0,其他节点为1)
2.所有节点必须在一棵树中(判断所有节点是否在一棵树中)
3.在节点相连的时候,不能是同一棵树中的节点(否则会出现环或者入度为2的情况)
#include<iostream>#include<cstring>#include<stdio.h>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<m;i++){if(rootnum[i]>1||set_find(a[i])!=root)// 1.入度不能大于1 , 2.所有节点必须在一棵树中{ok=false;break;}}if(ok)printf("Case %d is a tree.\n",mcase);elseprintf("Case %d is not a tree.\n",mcase);}return 0;}
0 0
- POJ 1308 Is It A Tree?
- POJ 1308 Is It A Tree?
- poj 1308 Is it a Tree?
- POJ 1308 Is it a tree??
- poj 1308 Is It A Tree?
- poj 1308 Is It A Tree?
- POJ 1308 Is It A Tree?
- poj 1308 Is It A Tree?
- poj 1308 Is It A Tree?
- POJ 1308 Is It A Tree?
- poj 1308 Is It A Tree?
- Poj 1308 Is It A tree
- poj 1308 is it a tree
- POJ 1308 Is It A Tree?
- POJ 1308 Is It A Tree?
- POJ-1308-Is It A Tree?
- POJ 1308 Is It A Tree?
- POJ 1308 Is It A Tree?
- 深入理解C++中的智能指针auto_ptr
- 【Easyui】Easyui Datagrid 排序
- 拒绝围观效应,逆向思维稳定网站排名
- CXX0017:Error:symbol "xxx" not found
- 常见的c字符串处理函数的源代码以及简单例子【1】
- POJ 1308 Is It A Tree?
- Fastnews最佳杂志网站模板
- poj 3678 2-SAT (Katu Puzzle)
- 性能分析十八招,你用哪一招
- Oracle实现多表插入-INSERT ALL
- listView使用中的一些技巧
- Fabrity - 的Pligg内容管理系统
- vs2010上安装opencv2.49
- ERS VS巨人队的超级碗