C++ 图上 bfs(五十八)【第五篇】

今天我们来学习一下图上bfs。

1.图上bfs

在图上,我们也可以进行 BFS,也可以解决图上 DFS 能解决的问题,比如连通块。

除此以外,根据 BFS 的性质,第一次到一个点的时候记下来的步数一定是到从起点到这个点的最小步数,所以我们可以用 BFS 在无权图上求从起点到每个点的最短路。

无权图最短路

那我们来具体研究一下无权图最短路。

已知在无权图中 BFS 第一次到达某个点的步数,就是到达该点的最短距离。

图片

我们可以用一个数组来存储从起点开始到达每个点的最短距离,设数组为 dis[ ]。

  1. 第一步,将数组 dis[ ] 全清成 −1,表示这个点没有被到过;

  2. 第二步,起点的 
    dis[start] 置为 
    0;

  3. 第三步,开始搜索,第一次到达某个点 
    v 时(dis[v]=−1),当前的步数 step 就是从起点到达该点的最短距离,更新 
    dis[v]=step,将 v 点入队列,继续搜索。

此时这个 dis 数组也可以起到原来表示一个点是否访问过的 vis 数组的作用,dis[u] 是 −1 就表示 
u 没访问过,否则就是访问过。

注:如果题目只求从起点 start 到唯一的终点 
end 的最短路时,则当确定 dis[end] 的值时(已经找到了最短路),结束搜索。

对于这样的搜索过程,使用邻接表更为方便。

这样搜索求解时间复杂度为 O(n+m) 。

如果需要求任意两点之间的最短路,那就枚举每一个点为起点进行 BFS,时间复杂度为 O(n×(n+m)) 。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux第56步_根文件系统第3步_将busybox构建的根文件系统烧录到EMMC

1、第1次将“rootfs”打包 1)、打开第1个终端,准备在“mnt”目录下创建挂载目录“rootfs”; 输入“ls回车” 输入“cd /mnt回车” 输入“ls回车”,查看“mnt”目录下的文件和文件夹 输入“sudo mkdir rootfs回车”,在“mnt”…

核心篇-OSPF技术之序(下)

文章目录 一. 实验专题1.1. 实验1:配置OSPF特殊区域1.1.1. 实验目的1.1.2. 实验拓扑图1.1.3. 实验步骤(1)配置IP地址(2)创建环回口(3)查看路由表(4)设置Stub区域&#xf…

(10)Hive的相关概念——文件格式和数据压缩

目录 一、文件格式 1.1 列式存储和行式存储 1.1.1 行存储的特点 1.1.2 列存储的特点 1.2 TextFile 1.3 SequenceFile 1.4 Parquet 1.5 ORC 二、数据压缩 2.1 数据压缩-概述 2.1.1 压缩的优点 2.1.2 压缩的缺点 2.2 Hive中压缩配置 2.2.1 开启Map输出阶段压缩&…

[OPEN SQL] 修改数据

MODIFY语句用于修改数据库表中的数据 MODIFY拥有INSERT和UPDATE的操作,如果数据库表中不存在符合条件的数据则会添加该条新数据,反之数据库表中存在符合条件的数据则会更新该条数据 本次操作使用的数据库表为SCUSTOM,其字段内容如下所示 航…

Mysql运维篇(四) Xtarbackup--备份与恢复练习

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除! 前言 xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有…

力扣例题----二叉树

文章目录 1. 100.相同的树2. 572. 另一颗树的子树3. 266.翻转二叉树4. LCR 175.计算二叉树的深度5. 110.平衡二叉树6. 101. 对称二叉树7. 牛客题目:KY11 二叉树遍历8. 102.二叉树的层序遍历9. 236.二叉树的最近公共祖先10. 105.根据前序和中序构造一棵二叉树11. 106…

Rust - 切片Slice

Slice类型 Slice数据类型没有所有权,slice允许我们引用集合中一段连续的元素序列而不用引用整个集合。字符串slice(string slice) 是String中 一部分值的引用。如下述代码示例,不是对整个String的引用而是对部分String的引用: fn main() {l…

ESP32学习(1)——环境搭建

使用的ESP32板子如下图所示 它可以用Arduino 软件,基于C语言开发。但是,在这里,我是用Thonny软件,基于micro_python对其进行开发。 1.安装Thonny Thonny的软件安装包,可以去它官网上下载。Thonny, Python IDE for begi…

leetcode 160 相交链表

题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结…

09、全文检索 -- Solr -- SpringBoot 整合 Spring Data Solr (生成DAO组件 和 实现自定义查询方法)

目录 SpringBoot 整合 Spring Data SolrSpring Data Solr的功能(生成DAO组件):Spring Data Solr大致包括如下几方面功能:Query查询(属于半自动)代码演示:1、演示通过dao组件来保存文档1、实体类…

Flutter Android开发 梳理Google Material Design颜色体系

前言 做安卓开发(Kotlin语言),Flutter开发的人员应该都听说过谷歌一直推崇的Material Design,而Material Design Color是其推崇的颜色体系,具体来说,Material Design Color是一套旨在帮助设计师和开发者创…

树形dp 笔记

树的最长路径 给定一棵树,树中包含 n 个结点(编号1~n)和 n−1 条无向边,每条边都有一个权值。 现在请你找到树中的一条最长路径。 换句话说,要找到一条路径,使得使得路径两端的点的距离最远。 注意&…

ELAdmin 隐藏添加编辑按钮

使用场景 做了一个监控模块,数据都是定时生成的,所以不需要手动添加和编辑功能。 顶部不显示 可以使用 true 或者 false 控制现实隐藏 created() {this.crud.optShow {add: false,edit: false,del: true,download: true,reset: true}},如果没有 crea…

Mysql第一关之常规用法

简介 介绍Mysql常规概念,用法。包括DDL、DCL、DML、DQL,关键字、分组、连表、函数、排序、分页等。 一、 SQL DCMQ,分别代表DDL、DCL、DML、DQL。 模糊简记为DCMQ,看起来像一个消息队列。 D:Definition 定义语句 M…

Learn LaTeX 019 - LaTex Math Formula 数学行内与行间公式

在科学排版中输入数学公式一直是一件很有挑战的事情,这个视频讲到了行内公式和行间公式的处理方法,并给出具体的演示。 https://www.ixigua.com/7298100920137548288?id7307433236572373556&logTag04e35402d88b16212e72

使用正点原子i.mx6ull加载字符驱动模块chrdevbase

搞了整整两天才整好!踩了不少坑,记录一下 0. 操作基础 操作前需要设置好如下配置 1.开发板和ubuntu能够互相ping通 2.开发板的SD卡中安装好uboot,我用的V2.4版本的,其他版本应该也行 3.准备材料 01_chrdevbase文件 linux-im…

windows vs 自己编译源码 leveldb 然后使用自己编译的文件

1 准备源码文件 1.1 第一种方法 git下载源码 vs项目中git leveldb源码和git third_party googletest-CSDN博客 1.2 第二种方法 手动下载 然后把第三方的源码下载 复制到 third_party 对应的文件夹中 没有文件夹 third_party -> powershell mkdir third_party 2 编译lev…

【AIGC】Stable Diffusion的生成参数入门

Stable Diffusion 的生成参数是用来控制图像生成过程的重要设置,下面是一些常见的生成参数及其详解 1、采样器,关于采样器的选择参照作者的上一篇文章 2、采样步数(Sampling Steps)是指在生成图像时模型执行的总步数&#xff0c…

详解 Redis 实现数据去重

✨✨ 欢迎大家来到喔的嘛呀的博客✨✨ 🎈🎈希望这篇博客对大家能有帮助🎈🎈 目录 言 一. Redis去重原理 1. Redis Set 数据结构 2. 基于 Set 实现数据去重 3. 代码示例 4. 总结 …

【Web】从零开始的js逆向学习笔记(上)

目录 一、逆向基础 1.1 语法基础 1.2 作用域 1.3 窗口对象属性 1.4 事件 二、浏览器控制台 2.1 Network Network-Headers Network-Header-General Network-Header-Response Headers Network-Header-Request Headers 2.2 Sources 2.3 Application 2.4 Console 三、…
最新文章