您的位置:首页 > 其它

[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

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: