最小生成树 kruskal 算法,适用于边稀疏的图, 先按照边进行排序。 取出小的边 选出小的,判断边的两个顶点是否是同一连通分量。如果是则继续取出下一个边。否则输出两个顶点,并合并两个连通分量。 需要注意的是一开始需要一个辅助数组来记录连通分量,初始化所有顶点自己是一个连通分量。当合并两个连通分量 ...
分类:
编程语言 时间:
2020-06-06 10:51:17
阅读次数:
54
总目录 > 8 图论 > 8.3 最小生成树 前言 树与图的紧密联系通过这一部分的内容就很好诠释了!名为生成树,实为图上问题,可以理解为由一张图生成一棵树。 子目录列表 1、连通图与生成树 2、最小生成树 3、Kruskal 算法 4、Prim 算法 8.3 最小生成树 1、连通图与生成树 在 8. ...
分类:
其他好文 时间:
2020-06-05 00:42:24
阅读次数:
94
克鲁斯卡尔算法:Kruskal算法是一种用来查找最小生成树的算法,由Joseph Kruskal在1956年发表。用来解决同样问题的还有Prim算法和Boruvka算法等。三种算法都是贪心算法的应用。和Boruvka算法不同的地方是,Kruskal算法在图中存在相同权值的边时也有效。 基本思想:先构 ...
分类:
编程语言 时间:
2020-05-31 20:04:26
阅读次数:
79
#####题目大意 有一个$n$个点$m$条边的有边权的连通无向图,其中有一条边是被指定的。 可以进行的操作是选一条边,把除它以外的边边权-1。 问至少操作多少次,使被指定的边一定会在这张图的最小生成树上。 \(n\leq 500;m\leq800;边权\leq10^6;\) #####题解 在进行 ...
分类:
其他好文 时间:
2020-05-28 23:46:23
阅读次数:
65
题目链接 #解题思路 看这题第一眼就想到了二分,虽然也过了不过还有一个更好的解法。本题的核心就是如何找到那条可以最小的最大的边$S$,二分确实是一个办法,但是还有一种办法是求最小生成树,其最大边就是$S$。 因为最小生成树是将几条不重复的最小的边加入集合形成的树,那么如果要构造一棵树都所有边比最小生 ...
分类:
其他好文 时间:
2020-05-26 20:00:14
阅读次数:
58
####题目描述 现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树。(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。由于不同的最小生成树可能很多,所以你只需要输出方案数对$31011$的模就可以了。 ###题解 容易想 ...
分类:
Web程序 时间:
2020-05-26 18:43:17
阅读次数:
88
LINK: "小B的图" 这道题就比较容易了。 容易想到将询问离线 然后 从小到大排序 那么显然是优先放正图(x+k)的边。 考虑随着x的增大 那么负图上的边会逐渐加进来 一条边被加进来当且仅当 其权值小于其能影响到的某条边的权值. 这样 随便列一个不等式就可以解出下界. 值得注意的是 加边的时候 ...
分类:
其他好文 时间:
2020-05-19 22:40:50
阅读次数:
60
一、思维导图 二、重要概念 1.DFS 时间复杂度为 O(n+e) 。 2.BFS 时间复杂度为 O(n+e) 。 3.最小生成树 1)Prim算法 时间复杂度为 O(n n) ,所以更适用于 稠密图 。 2) Kruskal算法 时间复杂度为 O(elog2e) ,所以更适用于 稀疏图 。 4.最 ...
分类:
其他好文 时间:
2020-05-17 21:45:57
阅读次数:
110
图总结 1.思维导图 2.要点总结 1.定义 G=(V,E) 顶点偶对 :(通常不考虑自环,即认为vi, vj不同) (vi, vj),无向边、无向图,vi, vj 互为邻接点 ,有向边、有向图,vi 为 vj 的邻接点,vi为弧尾、vj为弧头 带权的图称为 网络 。 2.基本术语 1、 度(TD) ...
分类:
其他好文 时间:
2020-05-17 13:30:03
阅读次数:
124
题面 大卫大帝刚刚建立了一个沙漠帝国,为了赢得他的人民的尊重,他决定在全国各地建立渠道,为每个村庄提供水源。 与首都相连的村庄将得到水资源的浇灌。 他希望构建的渠道可以实现单位长度的平均成本降至最低。 换句话说,渠道的总成本和总长度的比值能够达到最小。 他只希望建立必要的渠道,为所有的村庄提供水资源 ...
分类:
其他好文 时间:
2020-05-16 20:46:28
阅读次数:
72