[HDU] 1325 Is It A Tree?
2013-04-13 19:04
417 查看
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1325
方法:建好有向图后,要判断是否是树,关键判断两点,即1,是否只有一个唯一的根节点;2,是否从根到任何节点都有且仅有一条路径。这就要就图中入度为0的定点有且仅有一个,其他的定点入度只能是1.
感想:简单题。
代码:
View Code
http://acm.hdu.edu.cn/showproblem.php?pid=1325
方法:建好有向图后,要判断是否是树,关键判断两点,即1,是否只有一个唯一的根节点;2,是否从根到任何节点都有且仅有一条路径。这就要就图中入度为0的定点有且仅有一个,其他的定点入度只能是1.
感想:简单题。
代码:
View Code
#include<iostream> using namespace std; const int MAX = 100005; int indegree[MAX]; int main() { int a,b; int i=0,j=0,kk=0; memset(indegree,-1,sizeof(indegree)); while(scanf("%d %d",&a,&b)!=EOF) { if(a==-1 && b==-1) break; else { if(a==0 && b==0) { cout<<"Case "<<kk+1<<" "; if(i==0) cout<<"is a tree."<<endl; else { int coutZero=0; bool valid = true; for(int k=0;k<MAX;k++) { if(indegree[k]!=-1) { if(indegree[k]==0) coutZero++; else if(indegree[k]>1) { valid = false; break; } if(coutZero>1) { valid = false; break; } } } if(valid && coutZero!=0) cout<<"is a tree."<<endl; else cout<<"is not a tree."<<endl; memset(indegree,-1,sizeof(indegree)); kk++; } } else { if(indegree[a]==-1) indegree[a] = 0; if(indegree[b]==-1) indegree[b] = 0; indegree[b] ++; i++; } } } return 0; }
相关文章推荐
- HDU 1325 Is It A Tree? ( 有向图判断环
- hdu 1325 is it a tree?
- hdu 1325 Is It A Tree?
- HDU-1325 Is It A Tree? ACM解题报告(恶心的并查集)
- HDU 1325 POJ 1308 Is It A Tree? (并查集)
- HDU-1325-Is It A Tree?
- HDU 1325 Is It A Tree?
- HDU 1325 Is it a tree ?
- HDU 1325 - Is It A Tree?
- hdu 1325 Is It A Tree?(并查集全都是坑)
- hdu 1325 Is It A Tree?
- HDU 1325 Is It A Tree?(树的判断,经典题目)
- 【HDU】-1325-Is It A Tree?(并查集)
- 【并查集】HDU 1325 Is It A Tree?
- HDU 1325 POJ 1308 Is It ATree?(并查集)
- hdu 1325 is it a tree?
- hdu 1325 Is It A Tree? 判断是否是树 巨坑
- HDU 1325 Is It A Tree?
- HDU 1325 Is It A Tree?(并查集)
- HDU 1325 Is It A Tree?