POJ 应该是判断是否为简单无环连通图,用并查集直接秒杀即可,而HOJ的是有向树,还需判断所有点的入度必需小于2,用一个类似hash【】数组判断一下即可,

 ////判断树之一:入度<=1;三:点数-1==边数。用一个集合即可。二:无环,n次均为有效加入

#include<iostream> //判断是否是树  0MS
#include<cstdio>
#include<set>
using namespace std;
int fa[100001];
int mark[100001]; //入度不能大于1
int father(int x){return x==fa[x]?x:father(fa[x]);}
struct edge
{
int from;
int to;
};
int main()
{
int a,b;
int kcase=1;
for(int i=0;i<=100000;i++)
{
fa[i]=i;
mark[i]=0;
}
int num=0; int n=0; int flag=0;
set<int>se; //判断树之一:点数-1==边数。用一个集合即可。
while(~scanf("%d%d",&a,&b)&&a>=0&&b>=0)
{
if(a==0&&b==0)
{ if(n==0){printf("Case %d is a tree.\n",kcase);}
else
{
////判断树之一:入度<=1;三:点数-1==边数。用一个集合即可。二:无环,n次均为有效加入
if(flag==0&&n==num&&n==se.size()-1){printf("Case %d is a tree.\n",kcase);}
else{printf("Case %d is not a tree.\n",kcase);}
}
n=0;num=0; //初始化。
kcase++;
se.clear();
flag=0;
for(int i=1;i<=100000;i++)
{
fa[i]=i;
mark[i]=0;
}
}
else
{
edge temp;temp.from=a;temp.to=b;n++;
se.insert(a);se.insert(b);
mark[b]++; //入度++
if(mark[b]>1){flag=1;}
int xx=father(temp.from);int yy=father(temp.to);
if(xx!=yy)
{
fa[xx]=yy;
num++;
}
}
}
return 0;
}

poj1308+HOJ1325,判断是否为树的更多相关文章

  1. [剑指Offer]判断一棵树为平衡二叉树(递归)

    题目链接 https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=0&tqId=0&rp=2&a ...

  2. HDU-1232 畅通工程 (并查集、判断图中树的棵数)

    Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相 ...

  3. 判断一棵树是否为二叉搜索树(二叉排序树) python

    输入一棵树,判断这棵树是否为二叉搜索树.首先要知道什么是排序二叉树,二叉排序树是这样定义的,二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的 ...

  4. POJ-1308 Is It A Tree?(并查集判断是否是树)

    http://poj.org/problem?id=1308 Description A tree is a well-known data structure that is either empt ...

  5. 判断是否是树(Is It A Tree?)

    Description A tree is a well-known data structure that is either empty (null, void, nothing) or is a ...

  6. E - Is It A Tree? 并查集判断是否为树

    题目链接:https://vjudge.net/contest/271361#problem/E 具体思路:运用并查集,每一次连接上一个点,更新他的父亲节点,如果父亲节点相同,则构不成树,因为入读是2 ...

  7. 15.Subtree of Another Tree(判断一棵树是否为另一颗树的子树)

    Level:   Easy 题目描述: Given two non-empty binary trees s and t, check whether tree t has exactly the s ...

  8. [LeetCode]Subtree of Another Tree判断一棵树是不是另一棵树的子树

    将树序列化为字符串,空节点用符号表示,这样可以唯一的表示一棵树. 用list记录所有子树的序列化,和目标树比较. List<String> list = new ArrayList< ...

  9. LeetCode——Same Tree(判断两棵树是否相同)

    问题: Given two binary trees, write a function to check if they are equal or not. Two binary trees are ...

随机推荐

  1. Hadoop分布式集群安装

        环境准备     操作系统使用ubuntu-16.04.2 64位 JDK使用jdk1.8 Hadoop使用Hadoop 2.8版本     镜像下载  操作系统     操作系统使用ubun ...

  2. T1订正记-AC自动机-从树到图

    AC自动机已经足够棒了. 但是,好像有时还是要TLE的. 一般的AC自动还是比较好,如果在某些情况下还是会被卡掉,像是这个水题 考试的感觉 我看到这个题后,我清清楚楚的知道,这是个AC自动机+栈. 经 ...

  3. gocode安装不上的解决办法

    mkdir -p $GOPATH/src/golang.org/x  //路径下创建此文件 cd $GOPATH/src/golang.org/x      //切换到此目录 git clone ht ...

  4. mkdir touch vim

    vim和touch都用于新建文件 mkdir用于新建文件夹

  5. numpy次方计算

    >>> 2**np.arange(3, 6) array([ 8, 16, 32])

  6. vue+Java 前后端分离,多次请求Session不一致的问题(网络上找的)

    在vue main.js中增加以下配置: import axios from 'axios'; axios.defaults.withCredentials=true; 请求时:设置 withCred ...

  7. 695. Max Area of Island@python

    Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...

  8. POJ-1190 蛋糕问题

    这道题目我们使用深搜加剪枝的方法来写,我们首先算出一个最小表面积和最小体积来,就是半径从一递增,高度也从一递增,这是题目要求. 然后我们计算出一个底层最大的半径和最大的高度,我们就从这个最大半径和最大 ...

  9. Java Web中的编码解析

    在springmvc工程web.xml中配置中文编码 <!-- 配置请求过滤器,编码格式设为UTF-8,避免中文乱码--> <filter> <filter-name&g ...

  10. python基础知识12-异常

    几个命令: sudo apt install tree tree 当前目录以树形结构展示出来. tree a 查看a内的所有目录.也可以跟绝对路径. a = input('请输入您的密码') 将用户输 ...