树和图()

news2024/9/22 21:23:04

 预备知识(可以不看):

 无向图可以理解为是特殊的有向图

1. 图的遍历(因为树可以理解为是特殊的图,因此这里不考虑树的遍历,只考虑图的遍历)

 给定一个具体的图,便于分析

下面是树的结构 

1:->4->7->2
2:->5->8->1
3:->9->4
4:->6->3->1
5:->2
6:->4
7:->1
8:->2
9:->3

 (1)图的建立

const int N;
const int M = 2*N;

int e[M];//e[M]数组中存储的是结点的值(也可以理解为结点的编号)
         //这里的e[M]数组之所以用M,而不是N,是因为这是无向图,
         //每个结点所连的结点编号会有重复

int ne[M];//ne[M]存储的是下标为 i 的结点的下一个节点的下标
          //用M同样是因为无向图,无向图可以理解为是双向图

int h[N];//h[N]存储的是编号为 i 的结点的下一个结点的下标

int idx = 0;//idx表示要插入的点的下标

bool st[N];//用来判断编号为 i 的结点是否被搜索过

void add(int a,int b)//表示在编号为 a 的结点后面插入一个编号为 b 的结点
                     //这里的 a 和 b 代表结点的编号
{
    e[idx] = b;
    ne[idx] = h[a];
    h[a] = idx;
    idx++;
}


int main()
{
cin >> n;

    memset(h,-1,sizeof(h));//此时还没有加入任何元素,也没有创建任何一条边
                           //则 h[N] 中任意编号的结点都只是指向-1

//接下来题目会输入n-1行数据
//因为对于有n个结点的树,必定是n-1条边
for (int i = 0;i<n-1;++i)
{
int a,b;
cin >> a >> b;
add(a,b);
add(b,a);//因为是无向图,即双向图,两个结点互相指向,所以要创建两条反向的有指向的边
         //以达到无指向的边
}
    return 0;
}

 在图中表示一下插入的过程

 (2)深度优先搜索

void dfs(int u )
{
    st[u] = true;//首先标记编号 u 结点已经被搜索过了
    
    for (int i = h[u];i!=-1;i = ne[i])
    {
        int j = e[i];
        
        if (!st[j])
            dfs(j);
    }
}

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2034324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Servlet——个人笔记

Servlet——个人笔记 文章目录 [toc]Servlet简介Servlet命名Servlet由来实现过程 Servlet 相对 CGI 的优势简要说说什么是CGI Servlet 在IDEA中开发流程Servlet注解方式配置WebServlet注解源码WebServlet注解使用 Servlet常见容器Servlet 生命周期简介测试 Servlet 方法init()…

交叉编译util-linux

参考文章&#xff1a;https://www.cnblogs.com/wanglouxiaozi/p/17836701.html 1、下载源码 https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.39/2、编译 解压压缩包&#xff1a; sudo tar xvf util-linux-2.39.2.tar.gz执行autogen.sh生成configure ./aut…

解锁眼部舒压新境界:WT2605C-AT-L009眼部按摩仪蓝牙语音方案,手机APP控制,让护眼更轻松!

一、开发背景&#xff1a; 随着科技的飞速发展和人们生活品质的提升&#xff0c;眼部按摩仪作为一种能够缓解眼部疲劳、改善眼部血液循环的健康产品&#xff0c;越来越受到消费者的青睐。在众多眼部按摩仪中&#xff0c;采用WT2605C-AT-L009蓝牙模块的应用方案&#xff0c;不仅…

优思学院|PDCA和DMAIC之间如何选择?

在现代组织中&#xff0c;提升方法、质量和效率是企业追求卓越、保持竞争力的核心目标。在这条道路上&#xff0c;DMAIC&#xff08;定义、测量、分析、改进、控制&#xff09;和PDCA&#xff08;计划、执行、检查、行动&#xff09;被广泛应用于持续改进和问题解决。这两者虽然…

基于Java的大学新生入学系统设计与实现----附源码17610

摘要 随着高校规模的不断扩大和新生人数的增加&#xff0c;传统的手工登记和管理方式已经无法满足高效、准确的需求。为了提升大学新生入学迎新工作的效率和质量&#xff0c;本研究设计开发了一套基于Java的大学新生入学系统。系统通过信息技术的应用&#xff0c;集成了首页、校…

GIT IDEA 远程仓库操作

1、配置远程仓库地址 &#xff08;点击推送后如果没有配置远程仓库会让配置远程仓库&#xff09; 2、从远程仓库中下载项目到本地 3、提交->推送 更新代码&#xff08;拉取&#xff09;

PSTX250-600-70软启动器PSTX25060070面价

PSTX250-600-70软启动器PSTX25060070面价 PSTX250-600-70软启动器PSTX25060070面价 PSTX250-600-70软启动器PSTX25060070面价 PSTX250-600-70软启动器PSTX25060070说明书 PSTX250-600-70软启动器PSTX25060070接线图 PSTX250-600-70软启动器PSTX25060070引脚线 PSTX250-60…

配置错误和 IAM 弱点是云安全的主要隐患

根据云安全联盟发布的《2024 年云计算最大威胁》报告&#xff0c;通常与云服务提供商 (CSP) 相关的传统云安全问题的重要性正在持续下降。 配置错误、IAM 弱点和 API 风险仍然至关重要 这些发现延续了 2022 年报告中首次发现的轨迹&#xff0c;同时&#xff0c;诸如错误配置的…

第100+21步 ChatGPT学习:概率校准 Isotonic Regression

基于Python 3.9版本演示 一、写在前面 最近看了一篇在Lancet子刊《eClinicalMedicine》上发表的机器学习分类的文章&#xff1a;《Development of a novel dementia risk prediction model in the general population: A large, longitudinal, population-based machine-learn…

C语言中的结构体和位移段

在C语言中&#xff0c;结构体&#xff08;struct&#xff09;是一种用户自定义的数据类型&#xff0c;允许我们将不同类型的变量组合在一起&#xff0c;形成一个复合数据类型。结构体可以包含整型、浮点型、字符型等多种数据类型的成员。例如&#xff0c;我们可以定义一个表示人…

使用C语言构建Lua库

Lua 本身是用 C 语言编写的&#xff0c;因此使用 C 编写扩展可以更好地与 Lua 引擎集成&#xff0c;减少性能瓶颈&#xff0c;同时C 语言提供了对底层硬件和操作系统功能的直接访问能力&#xff0c;让 Lua 可以通过 C 扩展来实现对文件系统、网络等高级功能的支持。因为C 语言非…

The First项目报告:Web3人生模拟器,DegenReborn带你重开币圈

2023年6月14日&#xff0c;ReadON APP的首页上&#xff0c;一篇引人注目的文章《黑客马拉松奖&#xff1a;‘Degenreborn’——Meme与GameFi的梦幻交汇》跃然眼前&#xff0c;该文章巧妙融合了NFT、GameFi及Ethereum等热门话题&#xff0c;为读者带来了一场科技与娱乐的盛宴。 …

万字详述haproxy

目录 写在前面 1、Haproxy简介 2、Haproxy的安装和基本配置信息 2.1、haproxy的安装 2.2haproxy的基本配置信息 2.2.1基本配置文件global参数 2.2.2基本配置文件proxys的相关参数 2.2.2.1 default的相关参数 2.2.2.2 frontend的相关配置 2.2.2.3 backend的相关配置 …

24年下半年软考只剩下3个月时间,来得及准备吗?

过来人告诉你来得及&#xff0c;但是选对科目很重要&#xff01; 一般来说&#xff0c;自学备考软考的时间为4-5个月&#xff0c;如果大家现在才开始备考的话&#xff0c;时间就有点紧张了&#xff0c;需要加倍努力才行&#xff0c;推荐大家可以报考一些相对简单的科目&#x…

Windows Server 2012 R2服务器安装CVE-2024-38077补丁KB5040456的安装及问题解决

Windows 远程桌面授权服务远程代码执行漏洞CVE-2024-38077&#xff0c;该漏洞影响: 远程执行代码&#xff0c;漏洞最高严重性: 严重。本文记录了Windows Server 2012 R2服务器补丁KB5040456的安装及报错“此更新不适用于你的计算机”的问题解决过程。 一、漏洞相关信息 1.影响…

具有 SAM2 分段的 NDVI 无人机

在我们之前的博客文章《OAK相机扩展NDVI功能检测植物健康情况》中&#xff0c;我们探讨了 NDVI 方法以及如何使用多光谱相机计算它。 今天&#xff0c;我们通过使用带有多光谱相机的无人机并使用 SAM2 模型进行场分割和健康比较&#xff0c;将 NDVI 感知提升到一个新的水平。 …

基于Python的孔夫子旧书网热销书籍爬虫与可视化分析报告

摘要&#xff1a;随着社会的不断发展&#xff0c;数据时代的到来&#xff0c;数据的背后是什么&#xff0c;数据有什么用&#xff0c;怎么用庞大的数据来呈现出数据的价值&#xff0c;让我们一起去揭开它神秘的面纱。 以孔夫子旧书网热销书籍5本图书数据爬取为例&#xff0c;介…

免费录屏软件之QQ

录屏太简单了 1、首先下载QQ 2、在随便打开个对话框&#xff0c;再操作1、2步骤即可 3、嫌打开对话框麻烦&#xff1f; 4、打开QQ后直接按下CtrlAltR即可录屏&#xff0c;连对话框都不用打开了&#xff0c;按完快捷键后效果如下&#xff1a; 5、点击右下角开始录屏即可

想在官网中放可以720°交互的3D模型,怎么做?

在官网中放置可以交互的3D模型&#xff0c;可以通过以下步骤实现&#xff1a; 一、准备3D模型 1、设计3D模型&#xff1a; 使用专业的3D建模软件&#xff08;如Blender、3ds Max、Maya等&#xff09;制作符合需求的3D模型。确保模型的尺寸、比例和细节都符合实际要求。 2、…

斜坡函数在PLC中的应用

最近在做项目的时候用到了通过模拟量输出控制设备速度快慢。因为之前大多数是通过端子控制或者是总线的控制方式来控制速度&#xff0c;因此首先尝试了端子控制模拟速度输出。但是由于加速度过大导致设备启动后会快速加速&#xff0c;停止时也会快速减速&#xff0c;不够平滑。…