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. IP查询系统的异步回调案例

    package com.lxj.demo; import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu ...

  2. Struts2控制文件的上传与下载

    Struts2控制文件上传与下载的几个注意事项: (1)必须将表单的method设置为post,将enctype设置为multipart/from-data.只有这样,浏览器才会把用户选择文件的二进制 ...

  3. tween.js下面的轮播(饿了么点餐的那种效果)

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  4. asp.net mvc 5 微信接入VB版 - 获取AccessToken

    获取AccessToken是微信接入的又一个基础操作.很多微信接口需要这个2小时一刷新的AccessToken作为参数. 转载请说明作者Nukepayload2 首先根据开发文档把获取AccessTo ...

  5. 自定义Jquery分页插件

    /** * 功能说明:jPager 分页插件 * 参数说明:pages:[] 分页的控件个数 @id:显示分页的div ID,@showSelectPage: 是否显示当前分页的条目过滤下拉框 * @ ...

  6. 如何使用SAP CRM Marketing Survey创建一个市场问卷调查

    使用事务码CRM_SURVEY_SUITE进行编辑.选中Activities这个应用类型,点击新建按钮: 双击Survey的根节点,点击编辑按钮维护Suvey的标题: Survey的正文布局类型(La ...

  7. 约瑟夫环(java)

    问题描述:n个人围成一圈,每隔k个杀死一个,问最后的幸存者的编号 假设标号是0 ~ n-1,幸存者是f[n] 1.特殊情况:f[1]=0 2.一般情况:f[n] = (f[n-1]+k)%n 游戏开始 ...

  8. JavaEE-02 JSP数据交互01

    学习要点 request对象 response对象 转发与重定向 session对象 include指令 课程回顾 需求描述:编写JSP页面,计算2000—3000年中存在几个闰年. 实现分析:判断闰 ...

  9. sqlserver生成脚本

    1.只生成数据 2.只生成架构 3.生成数据和架构

  10. 分页语句where条件中的子查询有or关键字优化

    背景 开发说: 有段SQL语句,去掉order by很快,有order by之后,查询1小时都无法返回结果. 我叫他把SQL扔给我看下. SQL代码及执行计划 select * from (selec ...