输出删除的边 printf删除的边:n; for int i = 0; i removedEdgeNum; i++ Edge e = removedEdgesi; printfd d 权值为 dn etail ehead eweight; 上代码什么意思详细讲解
这段代码是一个函数,主要功能是对一个无向图进行最小生成树的求解,并输出删除的边。具体解释如下:
- 函数名
函数名为一个字符串,表示函数的名称,本函数的名称为“kruskal”。
- 函数参数
函数括号内的参数表示函数的输入参数,本函数没有输入参数。
- 函数返回值
函数返回值表示函数的输出结果,本函数没有明确的返回值,但是会输出一些结果,如下文所述。
- 函数内容
本函数的内容包括以下几个部分:
(1)定义变量
本函数首先定义了一些变量,如:
- removedEdges:一个数组,用于存储删除的边;
- removedEdgeNum:一个整数,表示删除的边的数量;
- mstEdges:一个数组,用于存储最小生成树的边;
- mstEdgeNum:一个整数,表示最小生成树的边的数量;
- ufset:一个数组,用于存储并查集的信息;
- totalWeight:一个整数,表示最小生成树的总权值。
(2)初始化变量
本函数接着对一些变量进行初始化,如:
- removedEdgeNum:初始化为0,表示初始时没有删除的边;
- mstEdgeNum:初始化为0,表示初始时最小生成树中没有边;
- totalWeight:初始化为0,表示初始时最小生成树的总权值为0;
- ufset:对每个节点的父节点初始化为自己,表示初始时每个节点都是一个独立的集合。
(3)对边进行排序
本函数接着对图中的所有边进行排序,排序的依据是边的权值,从小到大排序。排序完成后,边的顺序将存储在一个数组中。
(4)遍历所有边
本函数接着遍历所有边,对于每条边,判断它的两个端点是否在同一个集合中。如果不在同一个集合中,则将它们合并,并将这条边加入最小生成树中。如果在同一个集合中,则说明这条边会形成环,不能加入最小生成树中,需要将它从边集中删除,并将它存储到一个数组中,表示它被删除了。
(5)统计最小生成树的权值
本函数接着统计最小生成树的权值,即将最小生成树中所有边的权值相加。
(6)输出删除的边
最后,本函数输出删除的边,即遍历存储删除边的数组,输出每条边的起点、终点和权值。
总之,本函数的作用是对一个无向图进行最小生成树的求解,并输出删除的边
原文地址: https://www.cveoy.top/t/topic/gDEV 著作权归作者所有。请勿转载和采集!