图的连通性——连通性与连通块

连通块(c++) 进行深度优先搜索的次数就是图中的连通块个数,如果我们在每次进行深度优先搜索时,对访问过的点进行不同的标记,就可以记录每个连通块内的顶点有哪些了,也可以跟迷宫问题时一样求解连通块大小,最大连通块等问题。其实之前在迷宫问题的时候,我们谈过连通块,这两个概念其实是一样的,正如本章最开始所说,我们可以把迷宫画成一般的图的样子,而且画出来就是无向图。在无向图上,我们可以利用 DFS 可以求连通块的数量。形象一点说,一个连通块就是一些能互相到达的点形成的图上的一块。在迷宫上的连通块也就是在这个图上的连通块。 阅读详情

专栏导读及目录https://blog.youkuaiyun.com/createprogram/article/details/86741044

图的连通性

(1)路径

在无向图G中,若存在一个顶点序列Vp,V1,V2,……,Vm,Vq,使得(Vp,V1),(V1,V2),…,(Vm,Vq)均属于E(G),则称顶点Vp到顶点Vq存在一条路径。

在有向图中,路径也是有的,它由E(G)中的有向边<Vp,V1>,<V1,V2>,…,<Vm,Vq>组成。

路径上的边或弧的数目称为路径长度。

起点Vp和终点Vq相同的路称为环或回路。

若一条路径上除了起点Vp和终点Vq可以相同外,其余顶点均不相同,则称此路径为一条简单路径。起点Vp和终点Vq相同的简单路径称为简单回路或简单环。

(2)连通

在无向图G中,若从顶点Vi到顶点Vj有路径(当然无向图此时从Vj到Vi也一定有路径),则称Vi和Vj是连通的。

若无向图G中,任意两个不同的顶点Vi和Vj都连通,则称无向图G为连通图。下方a、b俩图都是连通图。

 

若有向图G中任意两个不同的顶点Vi和Vj,均存在Vi到Vj的路径和Vj到Vi的路径,则称有向图G是强连通图。如下图就不是强连通图。

 

(3)欧拉图、哈密尔顿图

在图中若存在一个经过每条边恰好一次而顶点可以重复的环,则称此回路为欧拉回路,此图为欧拉图。如刚刚的a图就是一个欧拉图。

在图中若存在从某个顶点出发,经过每个顶点一次的环,则称此回路为哈密尔顿回路,此图为哈密尔顿图。如刚刚的b图就是一个哈密尔顿图。

 

图的连通块

这是一种很常见的题型,在我的另一篇文章中(图的遍历——深度优先搜索和广度优先搜索)介绍了一个题目《油田》就是经典之一,思路是用搜索的方式判别点或者区块之间是否连通。这里给出链接供大家参考https://blog.youkuaiyun.com/createprogram/article/details/86744931

C++ dfs深度优先搜索(三十四)【第四篇】 l比如这个图,如果*是草地,.是空地,如果认为有公共边的格子是相互连通的(即一个格子和它周围上、下、左、右四个格子连通),那么图中草地一共有 2 个连通块,一个大小为 6 ,一个大小为 2。求连通块个数可以依次从每一个有效的没被访问过的点出发,往四周搜索直到出界或者遇到空地,一共出发了多少次就是有多少连通块,每一次可以统计这一次走了多少个格子,也就是这个连通块的大小。接下来我们看第二个,我们每次需要把ans更新为最大的值,所以可以使用max函数,但不要忘了在max前,我还是需要进行dfs与初始化的。 阅读详情

相关推荐

python 爬虫 xpath 存储到数据库

参考

我是张先生 1288

DFS入门(连通块)

总的来说,连通块中dfs充当的是标记地盘的作用,判断当前点,进行dfs(继续往下搜索)

m0_72677274的博客 6022

Simulink模块库介绍(一)——信号源模块

Simulink模块库介绍(一)——信号源模块库目录Clock模块Digital Clock模块Band-Limited White Noise模块 目录 simulink模块库中提供了丰富的信号源模块组。逐一介绍,算是对之前做个总结吧 Clock模块 通过时钟模块,输出的时间作为判断呢,如下图,前2s之前为高斯白噪声,后2s为正弦曲线,共计10s。 Digital Clock模块 数字时钟模块主要用于离散系统的计时,sample time表示采用时间,如下图:分别是1s和0.5s的采样时间 Band-

5万+

图中连通块问题

图中连通块问题 一、序言 连通块问题是图的搜索算法中比较经典的一类问题了。 判断两点是否连通、判断连通块个数等问题都是我们在图问题中经常碰到的。 在这里着重讨论DFS和并查集对于求解此类问题的帮助,本文将从各种例子出发,从各个细节展示对此类问题的把握。 tips:阅读本文前请对图的搜索算法(dfs和bfs)有所掌握,此部分的介绍将简略。 Now,Let’s go! 二、Analysis Probl...

qq_21515253的博客 2577

ROS2+PYTHON VENV虚拟环境配置方法

ROS2+PYTHON VENV配置方法本篇针对的是python。

下雨夏云的博客 555

深入浅出CenterFusion

结合论文和代码理解CenterFusion

Untitled的专栏 5102

连通块|c++基础--详细讲解

连通块其实就是求相邻格子的数量、有几块......通常用深度优先搜索来编写。

署髫 1167

2025年最新Cesium学习示例:Cesium-Examples

2025年最新Cesium学习示例:Cesium-Examples

2403_88103571的博客 1009

关于图的连通性问题 -- 求删除后连通块的个数

关于图的连通性问题 -- 求删除后连通块的个数

weixin_65550740的博客 1271

接上篇,记录一下【Unity 3D对博途PLCSIM的通讯】文章有点长~仔细看,很基础

本文参考链接:西门子PLC丨PROFINET通讯仿真(虚拟通讯)做了一些更详细的优化,本文使用的类库并非原作者使用的类库。 首先,昨天项目已经创建好了,这边也加了一个InputField和一个Button,可以实现简单的读取,ok开始。 放入准备好的通讯类库; 新建一个博途的项目,本次测试使用博途V15,测试环境为虚拟机,Unity运行在本地计算机,建立博途项目流程如下: 新建项目,右键项目-属性-保护-对勾,如图: 不得不说的是,仿真中加密的FB块是无法下载的哦~ 添加CPU...

NS_Speak(IVAV) 8056

【SSL 2344】[洛谷P2835]刻录光盘【图的连通性 / 连通块】

Description 在PJOI2010夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘给大家,以便大家回去后继续学习。组委会觉得这个主意不错!可是组委会一时没有足够的空光盘,没法保证每个人都能拿到刻录上资料的光盘,又来不及去买了,怎么办呢? 组委会把这个难题交给了DYJ,DYJ分析了一下所有营员的地域关系,发现有些营员是一个城市的,其实他们只需要一张就可以了,因为一个...

绫 594

【Unity】入门教程第一期-下载安装Unity编辑器(下)

讲解如何在Unity Hub中下载Unity编辑器以及IED环境

Xiaoxin的博客 2040

判断图的连通性算法及其matlab程序详解

不仅判断图的连通性,而且程序还能求出该图的连通块数,并指出每个顶点分别属于哪一个连通块。

weixin_72217561的博客 917

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

怀旧版电脑GBC模拟器

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

|图dfs遍历 连通块|L2-013 红色警报 (25 分)

//上次,我们用并查集做的红色警报 //这次,我们用dfs来遍历图(邻接表),计算连通块 # include <iostream> # include <cmath> # include <cstring> # include <string> # include <map> # include <algorithm> # include <vector> # include <cstdio> # includ

weixin_44769957的博客 260

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

连通块中 点的数量

题目描述: 给定一个包含n 个点(编号为1∼n)的无向图,初始时图中没有边。 现在要进行m个操作,操作共有三种: C a b,在点aa和点bb之间连一条边,a和b可能相等; Q1 a b,询问点a和点b是否在同一个连通块中,a和b可能相等; Q2 a,询问点a所在连通块中点的数量; 输入格式 第一行输入整数n和m。 接下来m行,每行包含一个操作指令,指令为C a b,Q1 a b或Q2 a中的一种。 输出格式 对于每个询问指令Q1...

weixin_62971133的博客 544

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

837. 连通块中点的数量

给定一个包含nn个点(编号为1∼n1∼n)的无向图,初始时图中没有边。 现在要进行mm个操作,操作共有三种: C a b,在点aa和点bb之间连一条边,aa和bb可能相等; Q1 a b,询问点aa和点bb是否在同一个连通块中,aa和bb可能相等; Q2 a,询问点aa所在连通块中点的数量; 输入格式 第一行输入整数nn和mm。 接下来mm行,每行包含一个操作指令,指令为C a b,Q1 a b或Q2 a中的一种。 输出格式 对于每...

qq_54481338的博客 275

图中连通块的个数:并查集

图的连通性问题 本文为转载,点击查看原文 在地图上有若干城镇(点),已知所有有道路直接相连的城镇对。要解决整幅图的连通性问题。比如,随意给你两个点,让你判断它们是否连通;或者问你整幅图一共有几个连通块,也就是被分成了几个互相独立的块。 修路工程问题会问还需要修几条路才能将所有城镇连通起来,实质就是求有几个连通块。如果只有1个连通块,说明整幅图上的点都连起来了,不用再修路了;如果是2...

爱玲姐姐的博客 2045

[PAT-A 1013]Battle Over Cities

考察图的遍历DFS 题目大意: 给出一个无向图,并规定删除图中某个顶点的时候,会同时把与之连接的边一起删除 给出K个查询,每个查询给出一个欲删除的顶点编号,求删除该顶点后需要增加多少条边,才能是图变为连通 思路: 1.题目本质上是在问对一个图需要至少添加几条边才能使其变为连通图,而最少添加的边数等于图的连通块的个数-1,所以等价于求图的连通块个数减一。 2.求连通块的个数可以用DFS遍历,即将v...

RegulusF的博客 211

牛客练习赛39 D动态连通块(level 1)(bitset)

题目链接 题意: 白连通块:图中一个点集V,若满足所有点都是白点,并且V中任意两点都可以只经过V中的点互相到达, 则称V中的点构成了一个白连通块。 黑连通块:类似白连通块的定义。 给你n个点,每一个点有白(0)/黑(1)。 然后有m个操作。 操作1:在u,v之间连一条边 操作2:输出颜色为白(0)/黑(1)连通块的个数 操作3:x,y两个点,保证是同色。假定是白色,那么如果...

咸鱼有梦想 189

【并查集】连通块中的点的数量

一、初始化 void init() { for (int i=1; i<=n; i++) { fa[i] = i; size[i] = 1; } } 二、找祖源 int find(int x) { if(fa[x]==x) return x; else...

weixin_28829629的博客 109

CodeForces 209C Trails and Glades[构造]

欧拉回路是经过所有边仅一次 无向图有欧拉回路的条件是:每个点的度数都是偶数 并且图连通(可以有孤立点) #include <cstdio> #define N 1000007 int f[N],I[N],d[N],n,m,u,v,A; int F(int x) {return x==f[x]?x:f[x]=F(f[x]);} int main() { d[1]=2;//孤立点不需...

weixin_33974433的博客 105

6821. 【2020.10.08提高组模拟】winner(xxx)

题目描述 有关图的连通性统计问题 这一类题目之前一直是我的天敌。见一次爆一次(也不知道为什么)。 考虑设一个DPf[i]f[i]f[i]表示含iii个点的连通块的方案数。 直接算的话比较麻烦,我们可以拿总方案数减去不是连通块的方案数。 我们枚举第iii个点所在的连通块的大小k(1<=k<i)k(1<=k<i)k(1<=k<i)。 很明显我们要从前i−1i-1i−1个点中选出k−1k-1k−1个点,即(k−1i−1)(^{i-1}_{k-1})(k−1i−1​),这个连

fengqiyuka的博客 172

求连通块的个数代码 dfs/并查集

dfs代码: //求连通块的个数 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;vector&gt; #define maxn 1000 using namespace std; vector&lt;int&gt; G[maxn]; bool vis[maxn] = {false}; int m, n; void ...

young_Tao的博客 1043

uva 247 calling circles

图的连通性问题。两个人相互连通当且仅当两人互相直接或者间接打过电话。 因为间接通话的存在,无法直接用dfs来求连通块。要用Floyd算法实现的传递闭包 来预处理两人是否直接或间接的通过话。Floyd算法完后则可以用dfs求出所有连通块了。 // Created by Chenhongwei in 2015. // Copyright (c) 2015 Chenhongwe

chenhongwei6447的博客 247

DFS连通性

对于连通性,本质上DFS和BFS实际上都可以解决连通块模型 也就是: Flood FIll模型 图和树的遍历 对于连通块模型,BFS除了可以解决是否连通的问题,也可以解决两个点之间最短距离是多少,但是DFS就只能判断两个点是否连通的问题 那这样的话,DFS有什么好处呢? 代码短 直接用系统栈,不需要手写栈 缺点: ​ 当搜索层数很多可能会爆栈 解决迷宫问题 步骤: 从这个点往四个方向出发 判断下一个要到的点的合法性,如果可以就继续递归;如果不行就返回上一层继续搜索 AcWing 1112.

INGg__的博客 346
上一篇: 进了985、211才知道:优秀的朋友圈,有多重要?
下一篇: L1-021 重要的话说三遍 (5 分)
黑色吊椅
博客等级 码龄9年 102粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值