图的连通性问题

合集下载

图论讲义第2章-连通性

图论讲义第2章-连通性

第二章 图的连通性在第一章中已经定义连通图是任二顶点间都有路相连的图。

对于连通图,其连通的程度也有高有低。

例如,下列三个图都是连通图。

对于图G 1,删除一条边或一个顶点便可使其变得不连通;而对于图G 2,至少需要删除两条边才能使其不连通,也可以删除一个顶点使其不连通;对于图G 3,要破坏其连通性,则至少需要删除三条边或三个顶点。

本章主要讨论如何通过图的顶点集、边集和不交的路集合的结构性质来获知图的连通性程度。

通过研究割边和割点来刻画1连通图的特性;定义连通度和边连通度来度量连通图连通程度的高低;通过不交路结构和元素的共圈性质来反映图的2连通和k 连通性。

§2.1 割点和割边定义2.1.1 设)(G V v ∈,如果)()(G w v G w >−,则称v 为G 的一个割点。

(注:该定义与某些著作中的定义有所不同,主要是在环边的顶点是否算作割点上有区别)。

例如,下图中u , v 两点是其割点。

定理2.1.1 如果点v 是简单图G 的一个割点,则边集E (G)可划分为两个非空子集1E 和2E ,使得][1E G 和][2E G 恰好有一个公共顶点v 。

证明留作习题。

推论2.1.1 对连通图G ,顶点v 是G 的割点当且仅当v G −不连通。

定理2.1.2 设v 是树T 的顶点,则v 是T 的割点当且仅当1)(>v d 。

证明:必要性:设v 是T 的割点,下面用反证法证明1)(>v d 。

若0)(=v d ,则1K T ≅,显然v 不是割点。

若1)(=v d ,则v T −是有1)(−−v T ν条边的无圈图,故是树。

从而)(1)(T w v T w ==−。

因此v 不是割点。

以上均与条件矛盾。

充分性:设1)(>v d ,则v 至少有两个邻点u ,w 。

路uvw 是T 中一条),(w u 路。

因T 是树,uvw 是T 中唯一的),(w u 路,从而)(1)(T w v T w =>−。

判断图的连通性

判断图的连通性

判断图的连通性连通性判断【试题描述】⽆向图,包含n个节点编号1⾄n,初始没有边。

现在逐次向图中添加m条边,你需要在添加边之前判断该两点是否连通。

【输⼊要求】第⼀⾏两个正整数n、m。

接下来m⾏,每⾏两个正整数x、y。

【输出要求】m⾏,每⾏包含⼀个整数0或1,0表⽰添加这条边之前两个点不连通,1表⽰连通。

【输⼊实例】4 51 21 32 34 43 4【输出实例】11【其他说明】n,m<=300000。

【试题分析】⽤并查集做,这是⼀道全世界最⽔的图论题,直接不⽤说,上代码……【代码】#include<iostream>using namespace std;int x,y,f[301001],n,m;int find(int x){if (f[x]==x) return f[x];return f[x]=find(f[x]);}void merge(int v,int u){int t1,t2;t1=find(v);t2=find(u);if(t1!=t2) f[t2]=t1;return ;}inline int read(){int x,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;for(x=ch-'0';isdigit(ch=getchar());x=x*10+ch-'0');return x*f;}inline void write(int x){if(x==0){putchar('0');return;}if(x<0)putchar('-'),x=-x;int len=0,buf[15];while(x)buf[len++]=x%10,x/=10;for(int i=len-1;i>=0;i--)putchar(buf[i]+'0');return;}int main(){n=read(),m=read();for(int i=1;i<=n;i++) f[i]=i;for(int i=1;i<=m;i++){bool w=false;x=read(),y=read();if(find(x)!=find(y)) w=true;//如果x和y的根⼀样那么就可以知道这两条边加进去以后图是连通的 if(w==false)write(1),printf("\n");else write(0),printf("\n");merge(x,y);//把x和y连起来}}。

离散数学图的连通性判定方法介绍

离散数学图的连通性判定方法介绍

离散数学图的连通性判定方法介绍离散数学是一门研究离散结构以及这些结构中的对象、性质和关系的学科。

其中,图论是离散数学中的一个重要分支,主要研究图的性质和关系。

图是由节点和边组成的结构,可以用于表示各种实际问题以及计算机科学中的数据结构。

在图的研究中,连通性是一个重要的概念,它描述了图中节点之间是否存在路径相连。

在实际应用中,判断图的连通性是一个常见的问题。

下面将介绍几种常用的图的连通性判定方法。

1. 深度优先搜索(DFS)深度优先搜索是一种常用的图遍历算法,它通过栈来实现。

该算法从图的某个节点开始,首先访问该节点并将其标记为已访问,然后递归地访问它的邻居节点,直到所有可达的节点都被访问过。

如果在搜索过程中访问了图中的所有节点,则图是连通的。

否则,图是不连通的。

2. 广度优先搜索(BFS)广度优先搜索也是一种常用的图遍历算法,它通过队列来实现。

与深度优先搜索不同的是,广度优先搜索首先访问图中的某个节点,并将其标记为已访问。

然后访问该节点的所有邻居节点,并将未访问的邻居节点加入队列。

接下来,依次从队列中取出节点并访问其邻居节点,直到队列为空。

如果在搜索过程中访问了图中的所有节点,则图是连通的。

否则,图是不连通的。

3. 并查集并查集是一种数据结构,用于管理元素之间的动态连通性。

在图的连通性判定中,可以使用并查集来判断图中的节点是否连通。

首先,将每个节点都初始化为一个独立的集合。

然后,遍历图中的所有边,如果两个节点之间存在边,则将它们所在的集合合并为一个集合。

最后,判断图中是否只存在一个集合,如果是,则图是连通的。

否则,图是不连通的。

4. 最小生成树最小生成树是一种保留了图连通性的树结构。

在连通性判定中,可以通过构建最小生成树来判断图的连通性。

首先,选择一个节点作为起始节点。

然后,从所有与当前树相连的边中选择权值最小的边,并将连接的节点加入树中。

重复该过程,直到树中包含了图中的所有节点。

如果最后构建的树包含图中的所有节点,则图是连通的。

图连通性算法及应用

图连通性算法及应用

图连通性算法及应用图是计算机科学领域中常见的数据结构,用于表示对象之间的关系。

在图论中,图的连通性是一个重要的概念,指的是在图中任意两个顶点之间是否存在路径。

图连通性算法是为了判断图中的连通性而设计的算法,并且在实际应用中有着广泛的应用。

一、连通性的定义与分类在图论中,连通性有两种常见的定义方式:强连通性和弱连通性。

强连通性是指在有向图中,任意两个顶点之间存在互相可达的路径;弱连通性是指在有向图中,将其所有有向边的方向忽略后,剩下的无向图是连通的。

本文将重点介绍无向图的连通性算法及其应用。

二、连通性算法的原理1. 深度优先搜索(DFS)深度优先搜索是最常用的连通性算法之一。

它从图中的一个顶点开始,沿着一条未访问过的边深入图中的下一个顶点,直到无法深入为止,然后回溯至上一个顶点,继续深入其他未访问过的顶点。

通过深度优先搜索算法,我们可以得到一个图的连通分量,从而判断图是否连通。

2. 广度优先搜索(BFS)广度优先搜索同样是常用的连通性算法之一。

它从图中的一个顶点开始,沿着一条未访问过的边遍历与该顶点直接相邻的所有顶点,然后再以这些相邻顶点为起点,继续遍历它们的相邻顶点,直到遍历完所有连通的顶点。

通过广度优先搜索算法,我们可以得到一个图的层次遍历树,从而判断图是否连通。

三、连通性算法的应用1. 社交网络分析在社交网络分析中,连通性算法可以用来判断一个社交网络中是否存在分割成多个互不相连的社群。

通过判断社交网络的连通性,我们可以发现隐藏在社交网络背后的关系网络,从而更好地理解和分析社会关系。

2. 网络路由优化在计算机网络中,连通性算法可以用来判断网络节点之间的连通性。

通过分析网络的拓扑结构,我们可以选择合适的路由算法,从而实现快速且可靠的数据传输。

3. 图像分割在计算机视觉和图像处理中,连通性算法可以用来判断图像中的连通区域。

通过判断图像的连通性,我们可以对图像进行分割和提取,从而实现目标检测和图像识别等应用。

应用离散数学图论图的连通性题库试卷习题及答案

应用离散数学图论图的连通性题库试卷习题及答案

§5.2 图的连通性习题5.21.证明或否定:(1)简单图G 中有从点u 到点v 的两条不同的通路,则G 中有基本回路。

(2)简单图G 中有从点u 到点v 的两条不同的基本通路,则G 中有基本回路。

解:(1)简单图G 中有从点u 到点v 的两条不同的通道,则G 中有回路。

(2)简单图G 中有从点u 到点v 的两条不同的路,则G 中有回路。

解 (1)不一定:如下图,点1与点3之间有两条通道:(1、2、3)和(1、2、1、2、3),但图中没有回路。

(2)一定:设两条路分别为),,,,,(211v x x x u L m =和),,,,,(212v y y y u L n =。

若对m i ≤≤1,n j ≤≤1有j i y x ≠,则),,,,,,,,,,(12121u y y y y v x x x u n n m -是一条回路。

否则假设l k y x =且是离u 最近的一对(即对k i ≤≤1,l j ≤≤1,不存在j i y x =),则),,,,,,,,,(12121v y y y x x x u l k -是一条回路。

2.设G 是简单图,)(G δ≥2,证明G 中存在长度大于或等于1)(+G δ的基本回路。

证:以图G 中一点v 1出发,与之相邻的点设为v 2,由于)(G δ≥2,则v 2至少还有一个邻接点,设为v 3,若v 3与v 1邻接,则形成长度为1)(+G δ的基本回路,则若v 3不与v 1邻接,则至少还有一个邻接点,设为v 4,若v 4与v 1或v 2邻接,则形成长度为大于或等于1)(+G δ的基本回路,若v 4与v 1和v 2都不邻接,至少还有一个邻接点,设为v 5,…,依次类推,一定可以到达最后一个顶点v i ,由于)(G δ≥2,则除了v i -1外,一定会与前面的某个顶点邻接,就会形成长度为大于或等于1)(+G δ的基本回路。

3.证明:若连通图G 不是完全图,则G 中存在三个点w v u ,,,使E v u ∈)(,,E w v ∈)(,,E w u ∉)(,。

图的代数连通度

图的代数连通度

图的代数连通度图代数,又称为离散数学(discrete mathematics),是数学的一个分支,主要研究由一组节点和联系这些节点的边组成的网络,也称为图。

其中图的一种重要性质是连通性,它表明图中节点之间是否都可以相互访问。

因此,如何检测图中节点之间的联系,以及如何衡量图中节点之间的联系强度,成为离散数学研究的重要内容。

在此背景下,图的代数连通度受到了广泛关注。

图的代数连通度是指图中节点之间的联系强度,它可以通过图的邻接矩阵(adjacency matrix)来衡量。

例如,当图中有 n 个节点时,可以建立一个 nxn的二元矩阵,它的每一个元素 aij示节点 i 节点 j 之间的边的权重,如果这条边存在,则 aij 为 1,反之为 0。

图的代数连通度是一种度量图节点间联系强度的量化指标。

有一种常用的方法,称为^1度量,它表示图中任何两个节点之间的联系强度。

在具体的计算中,它可以使用图的邻接矩阵来求解,其计算公式为:A1(i,j)=aij其中,aij为节点i到节点j之间的边的权重,如果节点i与节点j存在边,则aij的值为1,反之aij的值为0。

这一度量的计算,可以直接表示节点之间的联系强度,这样就可以度量图中任意两个节点之间的联系强度。

除此之外,还有其他度量方法,包括特征值度量、最大边度量等。

特征值度量是利用图的邻接矩阵,求解图的连通特征值而得到的。

而最大边度量则是利用最大边权重来衡量图的连通性。

这些度量方法都可以有效地量化图的连通性,但也存在一定的局限性。

特征值度量只能度量图中任意两个节点之间的联系强度,而无法衡量图中不同节点组合的联系强度;而最大边度量又因为不能有效的衡量图的连通性,因此,可以说这些度量方法都有其局限性。

另一方面,图的代数连通度可以有效地提供图中节点间联系强度的量化指标。

它可以通过一组不同的系数和一系列矩阵运算来实现,并且可以有效地衡量图中任意几个节点之间的联系强度,而不受两个节点之间的边的数量的限制。

图的连通性

图的连通性

图的连通性图的连通性2010-07-23 21 :02 图的连通性第十三章图的基本概念第三节图的连通性一.连通性概念图中两点的连通:如果在图G中u、v 两点有路相通,则称顶点u、v 在图G中连通。

连通图(connected graph) :图G中任二顶点都连通。

图的连通分支(connected brch,component) :若图G 的顶点集V(G)可划分为若干非空子集V 1,V 2, ⋯,V w, 使得两顶点属于同一子集当且仅当它们在G 中连通,则称每个子图G为图G的一个连通分支(i=1,2, ⋯,w) 。

注:(1) 图G的连通分支是G的一个极大连通子图。

(2)图G连通当且仅当w=1。

例13.5 设有2n 个电话交换台,每个台与至少n 个台有直通线路,则该交换系统中任二台均可实现通话。

证明:构造图G如下:以交换台作为顶点,两顶点间连边当且仅当对应的两台间有直通线路。

问题化为:已知图G有2n 个顶点,且δ(G) ≥n,求证G连通。

事实上,假如G不连通,则至少有一个连通分支的顶点数不超过n。

在此连通分支中,顶点的度至多是n–1。

这与δ(G)≥n 矛盾。

证毕例13.6 若图中只有两个奇度顶点,则它们必连通。

证明:用反证法。

假如u与v 不连通,则它们必分属于不同的连通分支。

将每个分支看成一个图时,其中只有一个奇度顶点。

这与推论13.1 矛盾。

证毕在连通图中,连通的程度也有高有低。

例如后面将定义一种参数来度量连通图连通程度的高低。

二.割点定义13.2 设v∈V(G),如果w(G–v)w(G) ,则称v 为G的一个割点。

( 该定义与某些著作有所不同,主要是在有环边的顶点是否算作割点上有区别) 。

例如定理13.3 如果点v 是图G的一个割点,则边集E(G)可划分为两个非空子集E 1和E 2,使得G[E 1]和G[E 2]恰好有一个公共顶点v。

推论13.2 对连通图G,顶点v 是G的割点当且仅当G–v 不连通。

数据结构-图的连通性

数据结构-图的连通性

③数据结构的动态分析 (closedge[5].adjvex,G.vexs[5])
∞ 6 1 6 ∞ 5 1 5 ∞ 5 6 5 ∞ 3 6 ∞ ∞ 4
i
1
v2 5
3
5 v4
2
v3
5 ∞ 5 ∞ ∞ 2 2
∞ 3 6 ∞ ∞ 6 3
∞ ∞ 4 2 6 ∞ 4 5
3
6
4
2
4 v 5
6
v6
5
G.vexs:
一、最小生成树
2.实例:V={v1,v2,v3,v4,v5,v6}
①任取u0=v1, 则:U={v1}, V-U={v2,v3,v4,v5,v6}
v2 6
v1 5 1 5 v3 3 6 4 2 5 v4
v5
6
v6
一、最小生成树
2.实例:V={v1,v2,v3,v4,v5,v6}
①任取u0=v1, 则:U={v1}, V-U={v2,v3,v4,v5,v6} ②取边(v1,v3),则:U={v1,v3} V-U={v2,v4,v5,v6}
一、最小生成树
3.算法的实现:
③数据结构的动态分析 G.arcs如下:
0 0 1 2 3 4 5 1 2 3 4 5 6
0
v1 5 1
1
v2 5
3
5 v4
2
v3
∞ 6 1 6 ∞ 5 1 5 ∞ 5 6 5 ∞ 3 6 ∞ ∞ 4
i
5 ∞ 5 ∞ ∞ 2 2
∞ 3 6 ∞ ∞ 6 3
∞ ∞ 4 2 6 ∞ 4 5
v2 6
v1 5 1 5 v3 3 6 4 2 5 v4
v5
6
v6
④取边(v6,v4),则:U={v1,v3, v6,v4} V-U={v2,v5} ⑤取边(v3,v2),则:U={v1,v3, v6,v4,v2} ⑥取边(v2,v5),则:U={v1,v3, v6,v4,v2,v5}
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

思考题
给定一系列网络之间的关系,若1与2连通,2与3 连通那么1与3就是连通的,问能否找到一个节点使它 故障后导致整个网络都崩溃,输出找到的点以及故障 后禅僧的连通的子网络数。
思考题
一国有n个党派,每个党派在议会中都有2个代表, 现要组建和平委员会,要从每个党派在议会的代表中 选出1人,一共n人组成和平委员会。已知有一些代表 之间存在仇恨,也就是说他们不能同时被选为和平委 员会的成员,现要你判断满足要求的和平委员会能否 创立?
2.割点和桥
证明: 如图,考虑u的任意子结点v。 如果v及其后代不能连回f,则删除 u之后,f和v不在联通; 反之,如果v或者它的某一个后代 存在一条反向边连回f,则删除u之 后,以v根的整棵子树中的所有结 点都可以利用这条反向边与f连通。 如果所有子树中的结点都和f连通, 根据“连通”关系的传递性,整 个图就是连通的。
3.强连通分量
Kosaraju算法
3 12 11 8 10 9 6 2 1
7
5
4
第一遍DFS进行标号,根据搜索的顺序不同,标号结果也不同
3.强连通分量
Kosaraju算法
3
12
11
8
9
6
2
10
7 反向之后的图
5
4
1
11 12 8,9, 10
2,3
5,6, 7
4
1
根据反向后的图,确定联通分量
3.强连通分量
w u v w u v
? 图1
? 图2
3.强连通分量
Tarjan算法代码实现
思考题
某省调查城镇交通状况,得到现有城镇道路统 计表,表中列出了每条道路直接连通的城镇。省 政府“畅通工程”的目标是使全省任何两个城镇 间都可以实现交通(但不一定有直接的道路相连, 只要互相间接通过道路可达即可)。问最少还需 要建设多少条道路?Βιβλιοθήκη A BABD
(2, 11)
(3, 10) F (8, 9)
C
D
(4, 7) C
E 图1 F E
黑色的边称为树边 红色的箭头称为返祖边(或者叫反向边)
(5, 6)
图2
2.割点和桥
d.定理
在无向连通图G的DFS树中, 非根节点u是G的割 点当且仅当u存在一个子节点v,使得v及其后代都没 有反向边连回u的祖先(不含u)。
1.并查集
1.并查集
2.割点和桥
a. 概念 割点: 在无向联通图G = (V, E)中, 如果删除一个 点u及其相关的边, 会使得新的图不连通, 那么 点u就称为图G的一个割点
桥(割边): 在无向联通图G = (V, E)中, 如果删除 一条边e = (u, v)后, 会使得新的图不连通, 那么边 e = (u, v)就称为图G的桥, 又称为割边
3
2,3 ,4 6 8 7 1 8
4
5
5,6 ,7
问题:我们应该如果求解有向图的各个强连通分量呢?
我们再次借助DFS,如图,如果我们从8开始DFS,将得到只 包含{8}的一棵DFS树; 从5出发,得到{5, 6, 7}; 再从2出发, 得到{2,3,4}; 从1出发,得到{1}。可以发现我们“轻而易举” 的就得到了SCC。细心的同学会发现,这种方式与遍历的顺序有 着极大的关系。
Kosaraju算法的实现
3.强连通分量
3.强连通分量
3.强连通分量
Tarjan算法
我们不难发现,Kosaraju算法是借助与遍历顺序来将不同的 SCC分离到不同的DFS树中。
我们可以考虑连通分量C,设其中第一个被发现的结点为x,则 C中其他结点都是x的后代。如果我们在x访问完成时立刻输出C。 那么我们就可以在同一颗DFS树中区分开所有的SCC了。 因此这时我们将问题转化为,如何判断一个点是否为一个SCC 中最先被发现的点。
3.强连通分量
Tarjan算法
假设我们正在判断结点u是否为某个 SCC第一个发现的结点。如果我们发现从 结点u的子结点出发可以到达结点u的祖先 w,显然u,v,w在同一个SCC中,因此结 点u不是该SCC中第一个被发现的结点(如 图1所示);另一方面,如果从结点v发现 最多只能到结点u,那么结点u是该SCC中 第一个被发现的结点(如图2所示)。
1.并查集
a.初始化
1 2 3 4 5
1.并查集
b. 合并
1 2 2 样例1 1 2 3 4 4 1
5 样例2 6 2
1
3
5
6
1.并查集
c.查询
2 3 的根是 1 5 4 1 5 2 3 6 6 的根是 4
1.并查集
d.代码实现
1.并查集
1.并查集
1.并查集
1.并查集
e.问题1
1 2 3 4 5 6
b.性质
• 一个有向环是最简单的强连通图。
• 如果一个有向图G的所有强连通分量都只有一个点,那么这 个图是有向无环图,即存在拓扑序。
3.强连通分量
c.强连通分量分解
任意的有向图都可以分解成若干不相交的强连通分量, 这就是强连通分量分解。把分解之后的强连通分量缩成一个 顶点,我们就得到了一个DAG(有向无环图)。 1 2
2.割点和桥
b. 性质
• 一个无向连通图, 如果没有割点, 那么任意两 点之间, 都存在点集互不相交(除了起点与终 点外)的两条路径 • 一个无向连通图, 如果没有桥, 那么任意两点 之间, 都存在边集互不相交的两条路径
2.割点和桥
1 2 3
4
5
1
2
6
3
4
5
图1
图2
2.割点和桥
问题: 那么我们该如何求解割点(桥)呢?
1 2
3 2,3 ,4 6 8 7 1 5,6 ,7
4
5
8
3.强连通分量
Kosaraju算法
我们可以通过两次DFS实现强连通分量分解。 第一次DFS时,选取任意顶点作为起点,遍历所有未访问的顶 点,并在回溯前给顶点标号(post order, 后序遍历)。对于其他 剩余的未访问的顶点,不断重复以上过程。完成标号后,越接近 图的尾部(搜索树的叶子),顶点的标号越小。 第二次DFS时,先将所有边反向,然后从标号最大的顶点为起 点就行DFS。这样每次DFS所遍历的顶点集合就构成了一个强连通分 量。对于其他剩余的未访问的顶点,不断重复以上过程。 该算法只进行了两次DFS,故时间复杂度为O(|V|+|E|)
2.割点和桥
g. 代码(以割点为例)
2.割点和桥
2.割点和桥
3.强连通分量
a.概念
一个有向图G = (V, E)被称为强连通图,当且仅当图中任 意两点间都存在一条路径。即对于图中任意两点u和v,存在 u到v的路径和v到u的路径。 强连通分量(Strongly Connected Component, SCC)是指一个 有向图G的一个极大强连通子图。
• 尝试删除每个节点(边),然后用DFS判断 连通分量是否增加 时间复杂度O(V(V+E))
• 深入挖掘DFS的性质,在线性时间(即O(V+E) 时间)内求解所有的割点(桥)
2.割点和桥
(1, 12)
c. DFS树
对图1进行DFS就能得到图 2(不唯一),图2就称为图1 的DFS树,又称为深搜树 每个节点都有一对数字(x,y) x表示第一次访问该点的次序 y表示第二次访问该点的次序
f f
u v v
u
图1
图2
2.割点和桥
f. 实现
为了方向起见,pre[u]为u在DFS树的先序遍历的顺序, low[u]为结点u及其后代所能连回的最早祖先的pre值。
{
min(low[u],low[v]) min(low[u],pre[v])
(u,v)为树边 (u,v)为返祖边且v不是u的父节点
于是我们可以将定理写成: 当节点u存在一个子结点v,使得low[v] ≥ pre[u],那么结点u就为 割点。另外,不难发现当low[v] > pre[u]时,那么 e = (u, v)即为桥 (割边)。
图的连通性问题
内容概要
• 并查集 • 割点和桥
• 强连通分量
• Tarjan
• Kosaraju
1. 并查集
• 并查集是一种用来管理元素分组的数据结构
• 并查集使用树形结构进行存储
• 并查集具有两个操作:
• 查询元素A和元素B是否属于同一个分组 • 合并元素A和元素B所在的分组
注意: 并查集虽然能够进行合并操作, 但却无法进行分割操作
思考题
曹操在长江上建立了一些根据地,根据地之间 有一些桥连着。如果这些根据地之间,互相可达, 那么曹操就获得战争的胜利。刘备为了防止曹操 获胜,就打算去摧毁连接曹操的根据地的桥。但 是诸葛亮把所有炸弹都带走了,只留下一枚给刘 备。所以刘备只能炸一条桥。问刘备能够阻止曹 操吗?
思考题
在A市中村与村之间的道路全是单行路,随着经 济的发展,国家启动了“村村通”工程。工程要求 任意两个村之间必须能够互相可达。给定已经存在 的道路,问至少需要修多少条路,才能实现“村村 通”。
1
2
3
4
5
6
1.并查集
f.优化1
4
1.并查集
e.问题2
2 4 1 3 方式1 1 2 3 5 2 6 方式2 3 4 5 6 5 6
1
1.并查集
f.优化2 • 对于问题2, 我们可以记录每个树的高度 • 合并时, 如果两棵树的高度不同
• 那么我们将高度低的树合并到高度高的树
1.并查集
g.优化后的代码
相关文档
最新文档