![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图
薛定谔式炼丹
这个作者很懒,什么都没留下…
展开
-
拓扑排序
拓扑排序的实现步骤在有向图中选一个没有前驱的顶点并且输出从图中删除该顶点和所有以它为尾的弧(白话就是:删除所有和它有关的边)重复上述两步,直至所有顶点输出,或者当前图中不存在无前驱的顶点为止,后者代表我们的有向图是有环的,因此,也可以通过拓扑排序来判断一个图是否有环。#include<iostream>#include<stack>#include<vector>#include<algorithm>using namespace std;#原创 2020-05-10 20:31:32 · 155 阅读 · 0 评论 -
并查集
1、什么是并查集并查集(Union Find)是一种用于管理分组的数据结构。它具备两个操作:(1)查询元素a和元素b是否为同一组 (2) 将元素a和b合并为同一组。注意:并查集不能将在同一组的元素拆分为两组。2、并查集的结构并查集可以使用树来实现。使用树形结构来表示以后,每一组都对应一棵树,然而我们就可以将这个问题转化为树的问题了,我们看两个元素是否为一组我们只要看这两个元素的根是否一致。显然,使用树形结构将问题简单化了。合并时是我们只需要将一组的根与另一组的根相连即可。3、并查集的实现转载 2020-05-09 13:52:44 · 89 阅读 · 0 评论 -
kruskal算法 并查集思想
对于稀疏图来说,用Kruskal写最小生成树效率更好,加上并查集,可对其进行优化。Kruskal算法的步骤:1.对所有边进行从小到大的排序。2.每次选一条边(最小的边),如果形成环,就不加入(u,v)中,否则加入。那么加入的(u,v)一定是最佳的。并查集如何实现:我们可以将每个集合视作一棵树,用这棵树的根的编号代表这个集合,最开始所有点都属于不同的集合,即每个点为其所在的树的根。在合并集合时,我们可以将其中一个集合的根的父亲设为另一个集合的根的父亲,找父亲操作我们可以通过从当前点往其父亲跳来实现原创 2020-05-08 23:09:35 · 329 阅读 · 0 评论 -
图——邻接表的DFS,BFS
邻接表做存储结构时,找邻接点所需的时间取决于顶点和边的数量,DFS,BFS时间复杂度为O(n+e)。1、邻接表2、邻接表 DFS:从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”。其实称为“远度优先搜索”更容易理解些。因为这种策略能往前走一步就往前走一 步,总是试图走得更远。所谓远近(或深度),就是以...原创 2020-05-06 20:28:50 · 4369 阅读 · 0 评论