poj 1308 Is it a tree? 题解

1.47寸ST7789V3彩屏硬件设计与驱动调试指南 TFT LCD是一种基于薄膜晶体管阵列控制像素明暗的主动式显示技术,其核心依赖于专用驱动IC(如ST7789V3)完成时序生成、GRAM管理与伽马校正。该类小尺寸彩色显示屏广泛应用于嵌入式HMI、IoT终端与可穿戴设备,具备高PPI、低功耗和SPI接口易集成等工程优势。理解RGB565数据格式、SPI Mode 0通信时序及关键寄存器(如0x36方向控制、0x3A像素格式、0x2A/0x2B地址窗口)是实现稳定显示的基础;而正确处理电源设计(严禁5V直供)、复位时序与背光PWM调光,则直接决定系统可靠性与能 阅读详情

题意简述

给定一些边,边中包括的点编号不一定连续。请判断是否组成一颗树。

数据
输入:

十分奇怪。多组数据,每组数据包含一些点对 ( a , b ) (a,b) (a,b),具体范围不明,反正开 1 e 6 1e6 1e6能过。如果 a = = 0 a==0 a==0且 b = = 0 b==0 b==0表示一组数据结束,如果 a = = − 1 a==-1 a==−1且 b = = − 1 b==-1 b==−1表示所有数据结束。

输出

对于第 i i i组数据,输出"Case i is a tree."(是一颗树),或"Case i is not a tree."(不是的情况)

样例

输入
6 8 5 3 5 2 6 4
5 6 0 0

8 1 7 3 6 2 8 9 7 5
7 4 7 8 7 6 0 0

3 8 6 8 6 4
5 3 5 6 5 2 0 0
-1 -1
输出
Case 1 is a tree.
Case 2 is a tree.
Case 3 is not a tree.

思路

显然并查集能过,在学 K r u s k a l Kruskal Kruskal的时候我们学会了如何用并查集判定一个树。
但是,这个题目有很多坑点

1.处理输入。。。这个还好了,如果a=0 and b=0就break,如果a=-1 and b=-1就exit(0)
2.有自环的。。。
3.图不一定联通。。。而且可能是森林。。。
4.点不连续,要打 v i s vis vis数组, v i s [ i ] vis[i] vis[i]表示 i i i是否出现过。但是,这个 v i s vis vis每次要 m e m s e t 0 memset0 memset0!!!
5.没有点也是树。。。
6.poj不支持bits/stdc++.h!!!

好了。。。接下来就是我用N次提交换来的AC代码:

#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstdlib>
#include<cstring>
using namespace std;
namespace Flandle_Scarlet
{
    #define N 1001000
    class DSU//并查集
    {
        public:
            int Father[N],Cnt[N];
            void Init()
            {
                for(int i=0;i<N;++i)
                {
                    Father[i]=i;
                    Cnt[i]=1;
                }
            }
            int Find(int x)
            {
                return x==Father[x]?x:Father[x]=Find(Father[x]);
            }
            void Merge(int x,int y)
            {
                int ax=Find(x),ay=Find(y);
                if (Cnt[ax]<Cnt[ay])
                {
                    Cnt[ay]+=Cnt[ax];
                    Father[ax]=ay;
                }
                else
                {
                    Cnt[ax]+=Cnt[ay];
                    Father[ay]=ax;
                }
            }
    }D;
    int Ed[N][2];
    bool vis[N];int Max;
    int n;
    void Input()
    {
        int i=1;
        while(1)//处理输入
        {
            int a,b;
            scanf("%d%d",&a,&b);
            if (a==0 and b==0)
            {
                break;//单个结束
            }
            if (a==-1 and b==-1) exit(0);//全部结束
            Ed[i][0]=a,Ed[i][1]=b;
            vis[a]=1,vis[b]=1;//做好标记
            Max=max(Max,max(a,b));//最大编号的点
            ++i;
        }
        n=i-1;
    }

    void Yes(int Case)
    {
        printf("Case %d is a tree.\n",Case);
    }
    void No(int Case)
    {
        printf("Case %d is not a tree.\n",Case);
    }
    void Solve(int Case)
    {
        if (n==0)//没有点
        {
            Yes(Case);
            return;
        }
        for(int i=1;i<=n;++i)
        {
            int u=Ed[i][0],v=Ed[i][1];
            if (D.Find(u)==D.Find(v))
            {
            	//环
            	//(注意这里包含了u==v的情况)
                No(Case);
                return;
            }
            D.Merge(u,v);//这个不要忘
        }
        int ancestor=0;//只能有一个祖先(有多个就是森林了)
        for(int i=1;i<=Max;++i)
        {
            if (vis[i])
            {
                if (i==D.Find(i))
                {
                    ++ancestor;
                }
            }
        }
        if (ancestor==1)//只有一个祖先就Yes
        {
            Yes(Case);
        }
        else//否则No
        {
            No(Case);
        }
    }

    void Main()
    {
        int Case=1;
        while(1)
        {
            D.Init();
            memset(vis,0,sizeof(vis));
            Input();
            Solve(Case);
            ++Case;
        }

    }
    #undef N //1001000
}
int main()
{
    Flandle_Scarlet::Main();
    return 0;
}

回到总笔记界面

MuJoCo 入门教程(一) 在 MuJoCo 仿真中输入自定义数字有三种方法。首先,可在 XML 中定义全局数字字段。它们有一个名称和一个实数值数组。其次,可以通过特定元素的自定义数组来扩展某些模型元素的定义。具体方法是在 XML 元素大小中设置 nuser_XXX 属性。第三,数组 mjData.userdata 不用于任何 MuJoCo 计算。用户可以在这里存储自定义计算的结果;请记住,所有随时间变化的内容都应存储在 mjData 中,而不是 mjModel 中。自定义文本字段可以保存在模型中。 阅读详情

相关推荐

倍福Beckhoff运动控制功能块实战解析:从MC_ReadActualPosition到MC_GearInVelo

本文深入解析倍福(Beckhoff)TwinCAT运动控制功能块,从基础的MC_ReadActualPosition、MC_Power等轴状态读取与使能操作,到MC_MoveAbsolute、MC_MoveRelative等单轴定位指令,并重点剖析了用于动态速度同步的核心功能块MC_GearInVelo在飞锯等场景的应用。文章结合实战经验,详细介绍了齿轮耦合、电子凸轮(MC_CamIn)等高级同步功能的参数配置、调试技巧及常见问题,旨在帮助工程师快速掌握倍福运动控制工具箱,实现复杂的同步工艺。

transformer2023的博客 982

poj1308

Is It A Tree? Time Limit:1000MS Memory Limit:10000K Total Submissions:10943 Accepted:3762 Description A tree is a well-known data structure that is either e...

weixin_34109408的博客 302

ADRV9026初始化避坑指南:手把手调试PostMcsInit常见故障

本文详细解析了ADRV9026多片同步初始化过程中的PostMcsInit常见故障,包括时钟校准失败、JESD链路建立问题和ARM核通信异常等。通过实际项目经验,提供了硬件检查清单、软件配置要点和分层诊断方法,帮助工程师快速定位和解决问题,提升系统稳定性。

hadoop5ranger的博客 620

Is It A Tree?——是一棵树吗?(并集查)

Problem Description A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the fo...

一个和代码打交道の小孩 3735

SBP依赖计算中的蝴蝶效应:一个Prefab修改如何触发全量重建?

本文深入探讨了Unity中SBP(Scriptable Build Pipeline)依赖计算的蝴蝶效应,解析了Prefab修改如何触发全量重建的机制。通过分析Asset与Object的层级关系、依赖计算的三种维度及CacheEntry系统,揭示了全量重建的根本原因,并提供了依赖可视化工具开发、优化策略与最佳实践,帮助开发者提升构建效率。

weixin_29015051的博客 445

USB-C快充协议分析仪:QC/PD双协议识别与功率监测设计

USB-C快充协议是现代移动设备能量传输的核心技术标准,其本质是通过物理层电压特征(如DP/DM组合、CC线BMC编码)实现动态电压协商。理解协议握手原理对充电器研发、兼容性测试及故障诊断至关重要。本方案聚焦受电端(Sink)视角,基于FUSB302B与高阻抗DP/DM采样电路,实现QC2.0/QC3.0/QC4+与PD2.0/PD3.0的实时识别与状态机解析;结合INA219高精度电流检测与μs级同步采样,达成±0.06%功率测量精度。典型应用于快充芯片验证、产线协议一致性测试及第三方评测,为USB供电系

weixin_42153793的博客 245

Is It A Tree?

A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the following properties.  There ...

Angeliaaa的博客 556

Halcon形状模板匹配实战:inspect_shape_model参数优化指南

本文深入解析Halcon形状模板匹配中inspect_shape_model参数的优化技巧,涵盖NumLevels和Contrast参数的实战应用。通过具体案例展示如何平衡匹配速度与精度,帮助开发者高效调试形状模型,提升工业视觉检测的准确性和效率。

weixin_30342209的博客 618

这是一棵树吗

问题描述 树是一种同学们都不陌生的数据结构,他有可能是一棵空树或是一些满足要求的节点链接而成的有向边的集合。 一棵树只有一个根节点,根节点没有指向他的边。 除了根节点的每一个节点都只有一条边指向它。 出现环的图都不是树,例如,下图中只有前两个图是一棵树,而第三个图不是。 在本题中,你将对一些节点连接而成的有向边的集合进行判定判定每组的输人数据构成的图是否是一棵树, 输入...

li_miaomiao的博客 401

分析android逆向的学习路线

俗话说:“一入逆向深似海,从此头发是路人”。 安卓逆向作为当下热门行业“网络安全”的主要技术之一,已经受到了越来越多人的青睐。但是很多刚入门的新手小伙伴对于怎么去学习却还很是迷糊。本文就分享一下android逆向的学习路线供大家参考。 目前学习安卓逆向的人群大约分为两种: 第一种是完全没有任何基础的计算机纯小白; 第二种是本来就做开发懂编程的IT行业人员。 我们就针对这两个不同的人群做一下安卓逆向的学习路线分析。 一、无基础小白想入门 作为没有任何基础想要入门的计算机纯小白,学习上推荐参照以下步骤: (一

Hacker_by_V的博客 3078

VS2019配置Qt5.14.2开发环境全流程(含MSVC2017 64-bit选择指南)

本文详细介绍了在VS2019中配置Qt5.14.2开发环境的完整流程,特别针对MSVC2017 64-bit编译器的选择提供了专业建议。从环境准备、Qt安装配置到VS2019集成设置,逐步指导开发者完成开发环境的搭建,并提供了常见问题的解决方案和高级优化技巧,帮助开发者高效进行Qt开发。

weixin_29243279的博客 514

Is it a Tree? 并查集 坑多

A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the following properties. Th

moon548834的博客 484

6、直流微电网中恒功率负载(CPL)的稳定性分析与控制策略

本文探讨了直流微电网中恒功率负载(CPL)带来的稳定性问题,并深入分析了其影响机制及相应的缓解策略。文章首先通过小信号模型和非线性分析揭示了CPL对系统稳定性的影响,接着讨论了被动稳定方法的优缺点,最后重点介绍了基于时间的方法和几何控制器等控制策略。这些方法各有优劣,在实际应用中需结合具体需求选择合适方案,以实现直流微电网的稳定运行。

star的博客 227

poj 1308 Is It A Tree题解

注意: 1:当为空树的时,也是一棵树。 2:当有回环时,就不是一棵树。 3:当两个节点已经在树里面时,要是两个节点之间还有边要添加,则不是也棵树。 AC代码: #include #include #include #include #define MAX 106 using namespace std; int father[MAX]; bool mark[MAX]; void Ma

Twilightuse93的专栏 580

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

POJ1308 Is It A Tree?

POJ1308 Is It A Tree? 1. 并查集,有点忘了,看维基百科回顾起来了,三个操作,路径压缩、合并、查找父节点。代码很简单,具体参考http://zh.wikipedia.org/wiki/%E5%B9%B6%E6%9F%A5%E9%9B%86 ...

dayong9372的博客 236

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

POJ——1308 HDU——Is It A Tree?(并查集模板题)

原题链接:http://poj.org/problem?id=1308 测试样例: Sample Input 6 8 5 3 5 2 6 4 5 6 0 0 8 1 7 3 6 2 8 9 7 5 7 4 7 8 7 6 0 0 3 8 6 8 6 4 5 3 5 6 5 2 0 0 -1 -1 Sample Output Case 1 is a tree. Case 2 is a tree. Case 3 is not a tree. 题意:给你一些点,判断是不

pursuit的博客 550

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

poj1308 (并查集)Is It A Tree?

题目链接:poj1308 题目的要求是让判断给出的点能否连接成一颗树,一棵树的话就只有一个树根,同时一个子节点不能同时拥有两个父亲,解法是用并查集,用father数组来记录每个节点的父节点,v数组来记录是否输入了节点。 #include #include #include #include #include #include using namespace std; int f

no pains,no gains 1052

POJ 1308 Is It A Tree?

题意:给出一些节点,判断这些节点构成的是不是一棵树 思路:

搏风雨的专栏 707

Is It A Tree?(它是一棵树吗?)

https://cn.vjudge.net/problem/POJ-1308 A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes sat...

嵩韵儿 2174

POJ 1308-Is It A Tree 并查集

题目来源: http://acm.pku.edu.cn/JudgeOnline/problem?id=1308解题报告:首先判断这些点是否属于同一个集合: 如果两个点之间有边相连,则它们属于同一个集合接着,判断是否存在一个点入度为0,即根再判断,除了根以外的点,是否入度都为1,如果满足上述条件,则为树.#include using namespace std; int cnt=0; typedef struct _node { int key; int rank; int de

kindlucy的专栏 940

[POJ 1308]Is It A Tree?[并查集][判断有向树]

题目链接:[POJ 1308]Is It A Tree?[并查集] 题意分析: 判断给出的有向图是不是一颗树。 解题思路: 嘛,首先得看看题目是怎么给树定义的。 一、树是n(n>=0)个结点的有限集 二、树没有环 三、是树,不是森林 四、有且仅有一个结点的入度为0 五、除树根外,结点入度为1 对于条件二,当某条边的左右两端点都属于一个集合时,就存在环了。 对于条件三,当某个结

闲停 1083

POJ 1308 Is It A Tree?【判断树 并查集】

POJ 1308 Is It A Tree? 题目链接:vjudge传送门 题目大意: 给定若干条有向边,判断所给的所有边是否能组成一颗树(包含空树) 具体思路: 离散数学图论知识,只有一个结点入度为0,其它结点入度均为1的图是树,保存每个点的入度,最后判断即可 也可按树的定义来,用并查集来维护 新加入的边,被指向的结点必须是并查集中的祖先结点(排除入度大于1和环的情况),加入完后把两点合并 处理...

指弹键盘哼民谣 498

POJ1308:Is It A Tree?(并查集)

Is It A Tree? 题目链接:http://poj.org/problem?id=1308 Description: A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by di...

dft539533的博客 108

poj 1308 Is It A Tree? 简单并查集

闲的没事,做一道POJ,已经AC胡哥题册142个题了,好期待200题的大奖啊。扯远了。。 这个题太简单了,并查集的简单应用,输入有挺多坑的。 1 : 空树是一棵树。 2: :自己不能指向自己。 3 : 不能有重复边。 4 : 两个树合并的时候必须至少有一个点是祖先。 5 : 即使输入结束前已经判断完毕,也得输入结束。 //===============================

241

POJ1308-Is It A Tree?

http://poj.org/problem?id=1308 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #define maxn 1006 using namespace std; struct Edge { int ...

weixin_30457065的博客 118

POJ 1308 Is it a tree(并查集)

POJ1308 并查集的学习 #include <iostream>#include <memory.h>using namespace std;int father[5000];bool has_point[5000];int case_number;void Ini_Set(int y){ father[y]=y; has_point[y]=tr...

weixin_30708329的博客 92
上一篇: 洛谷 4139 上帝与几何的正确用法 题解
下一篇: Codeforcs 75C Modified GCD 题解
LightningUZ
博客等级 码龄9年 33粉丝 254原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值