poj 1308 Is It A Tree?
来源:互联网 发布:矩阵分解优化问题 编辑:程序博客网 时间:2024/04/30 18:39
树 除了空树外,有且仅有一个根结点,且除根结点外,其余结点有且仅有一个前驱
判断图是否为树,则需判断它们的公共祖先是否仅有一个,且入度都小于2,并且不能形成环
链接:poj 1308
#include<stdio.h>#define N 1000int f[N+10],t[N+10],c[N+10];int find(int a){ if(a!=f[a]) f[a]=find(f[a]); return f[a];}int mix(int a,int b){ int x,y; x=find(a); y=find(b); if(x==y) return 0; f[x]=y; return 1;}int main(){ int i,j=0,n,m,a,b,flag; while(scanf("%d%d",&m,&n)!=EOF){ if(m<0&&n<0) //当输入两个负数时结束 break; j++; if(m==0&&n==0){ printf("Case %d is a tree.\n",j); continue; } for(i=1;i<=N;i++){ f[i]=i; c[i]=t[i]=0; } flag=1; while(m!=0&&n!=0){ t[m]=t[n]=1; c[n]++; //计算入度 if(c[n]>1) flag=0; a=mix(m,n); //判断是否会形成环 if(!a) flag=0; scanf("%d%d",&m,&n); } if(flag){ b=0; for(i=1;i<=N;i++){ if(t[i]&&f[i]==i) b++; //计算根结点数目 if(b>1) break; } } if(flag&&b==1) printf("Case %d is a tree.\n",j); else printf("Case %d is not a tree.\n",j); } return 0;}
2 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?
- CSS实现背景透明,文字不透明(各浏览器兼容)
- 数字图像处理-频域增强
- BaseDao
- 使用内部(com.android.internal)和隐藏(@hide)API[第2部分,定制android.jar]
- 富豪们掌握着获得智慧的智慧
- poj 1308 Is It A Tree?
- 导入源码步骤
- 1153. Word Reversal
- 如何删除访问局域网共享时所保存的用户名及密码
- R: 循环语句中warning()的显示问题
- 昆虫繁殖
- 算法之旅——二分查找
- 【LeetCode】Merge k Sorted Lists
- 儿童业态放公司梵蒂冈仿盛大