08 2022 档案
二分图
摘要:二分图 可以将一个图分为两部分,这两部分内部没有边,都是由一部分连向另外一部分 那么就称这个图为二分图 染色法判别二分图 如何判断二分图 不含奇数环是一个充要条件 只要没有奇数环,就是一个二分图,只要是一个二分图,就没有奇数环 所以我们可以通过染色的方式来判别一个图是不是二分图 首先选一个没有染色的
最小生成树
摘要:最小生成树 最小生成树的算法有两种 我们一般遇到稠密图都会用到朴素版Prim,稀疏图都会用Kruskal 因为这样代码最短 朴素版Prim算法 Prim根dijkstra长得特别像 算法实现: #include <iostream> #include <cstring> #include <algo
最短路
摘要:最短路算法 最短路的分类 根据不同的需求选择不同的最短路算法 图论的算法考试的侧重点在建图和算法实现 所以证明并不是那么重要 朴素版dijkstra算法 基于贪心 算法实现: #include<iostream> #include<cstring> #include<algorithm> using
拓扑排序
摘要:拓扑排序 拓扑序列是关于有向图的 拓扑序列: 对于图中的每条边(x, y),x在序列A中都出现在y之前,则称A是该图的一个拓扑序列 也就是说,把图中每一个点按拓扑序排好后,每一个点都是从前指向后的 如果一个图中有环,那么一定没法展成拓扑序 所以我们也称有向无环图为拓扑图 有向图中每一个点有入度和出度
树与图的存储与遍历
摘要:树图的存储与遍历 树是特殊的图,是无环连通图,所以只需要看图的存储 图分为两种:有向图和无向图 无向图可以看为有向图,把所有无向边都存两个有向边即可 有向图的存储: 邻接矩阵,g[a][b]存储a->b n^2,适合存储稠密图 邻接表(n个单链表)(推荐) 使用邻接表存储 树与图的dfs和bfs与搜
基础搜索
摘要:基础搜索 深度优先搜索(dfs, 栈实现) dfs十分简单,不搜到最后不会往回走 只需要一个例题就可以整明白dfs是怎么应用的 全排列问题 给定一个n,输出n的全排列 分析: 每增加一个数字就向下搜到一个节点 我们从第一个开始搜,直到搜到第n个数字结束 搜的过程中记录搜过了那个数字,之后就不能搜这个