zoukankan      html  css  js  c++  java
  • [HDU] 1325 Is It A Tree?

    题目链接:

    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;
    }
  • 相关阅读:
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
  • 原文地址:https://www.cnblogs.com/kbyd/p/3019007.html
Copyright © 2011-2022 走看看