代码源图论笔记
文章平均质量分 82
分享我在代码源学习图论的感悟与笔记
拾墨乄
前途似海,来日方长
展开
-
二分图
思路 : 我们可以发现除了已经给出的 不可被覆盖的点外,每个多米诺骨牌需要占两个点,那么我们其实可以将每相邻的两个点标记为不同的颜色,且一共只用两种颜色标记点。我们可以枚举每个点,如果点还没被染色,那么将其染为1并用dfs遍历这个点所在的连通块的每个点,染1染2这样交替进行,一旦发现冲突(两个相邻的点是同一个颜色)那么该图就不是一个二分图。二分图的匹配:给定一个二分图 G,在 G 的一个子图 M 中,M 的边集 {E} 中的任意两条边都不依附于同一个顶点,则称 M 是一个匹配。原创 2023-06-30 17:01:04 · 112 阅读 · 0 评论 -
拓扑排序
定义 : 对一个有向图构造拓扑序列,排序类似流程图那样按先干什么后干什么这样排序拿大学教学安排举个例子(图来自oi wiki)先不要考虑操作系统到数据结构那条蓝线。那么我们要先学程序设计才能学习后面的算法语言,离散数学等等。那么在拓扑序列中,程序设计就要在算法语言,离散数学这些前面。但拓扑序列并不是唯一的,比如高等数学和程序设计是互不影响的,那么在拓扑序列中高等数学和程序设计谁在前谁在后都可以现在让我们考虑操作系统到数据结构那条蓝线。原创 2023-06-25 23:34:26 · 77 阅读 · 0 评论 -
最小生成树
生成树 : 如果连通图G的一个子图是一棵包含G的所有顶点的树,则该子图称为G的生成树最小生成树边权和最小的生成树叫做最小生成树。如果原图不连通,则没有最小生成树求最小生成树有两种方法 : prim 和 kurskal一 . prim算法将最小生成树看做一个集合,每次选取距离集合最近的点,如果这个点不在集合中则加入集合,也就意味着这个点和集合里的点所连成的边加入了集合。最后等到所有点都加入集合则所有进入集合的边构成最小生成树。例题1 prime板子题。原创 2023-06-25 13:29:08 · 62 阅读 · 0 评论 -
最短路之dijkstra算法
代码源中关于dijkstra的算法介绍如下图简单来讲就是每次选出一个没被选过的离起点最近的点,松弛这个点所在的每个边,直到所有点都被选过。这样dist[n]就是起点到n的最短路。原创 2023-06-23 02:45:41 · 166 阅读 · 1 评论 -
最短路之 Bellman-ford 算法
对于所有数据,保证 3≤n≤5000,0≤m≤10000,1≤x,y,a,b,c≤n,1≤z≤100003≤n≤5000,0≤m≤10000,1≤x,y,a,b,c≤n,1≤z≤10000,保证整张图连通并且 a,b,ca,b,c 两两不同。对于所有数据,保证 2≤n≤500,1≤m≤2000,1≤k≤10,1≤x,y≤n,1≤z≤100002≤n≤500,1≤m≤2000,1≤k≤10,1≤x,y≤n,1≤z≤10000,保证 z 是偶数。如果不存在从 x 号点到 y 号点的路径,请输出。原创 2023-06-13 20:45:18 · 255 阅读 · 1 评论 -
代码源图的遍历
对于所有数据,保证 2≤n≤20000,0≤m≤100000,1≤k≤10,1≤x,y,u,v≤n,x≠y2≤n≤20000,0≤m≤100000,1≤k≤10,1≤x,y,u,v≤n,x≠y。对于所有数据,保证 2≤n≤20000,0≤m≤100000,1≤x,y≤n2≤n≤20000,0≤m≤100000,1≤x,y≤n。对于所有数据,保证 2≤n≤8,0≤m≤n(n−1)/2,1≤x,y,k≤n2≤n≤8,0≤m≤n(n−1)/2,1≤x,y,k≤n。第一行两个整数 n,m 分别表示图的点数和边数。原创 2023-06-13 21:28:11 · 55 阅读 · 1 评论