图论
文章平均质量分 75
学习图论,并以洛谷平台作为题源
是饿梦啊
喜欢算法,喜欢东野圭吾
展开
-
基于DP的最短路算法---Floyd
简介:Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。特点:1.可以求任意两个结点之间的最短路的2.复杂度比较高,但是常数小,容易实现(三重循环)3.适用于任何图,包括有向图,无向图,边权正负均可(不存在负环)核心思想:我们枚举三个点 i , j , k;对于两个点(i , j) , d[i , j] 表.原创 2022-05-11 00:01:54 · 708 阅读 · 0 评论 -
并查集(C++)
最近也是被数论搞的头大,不得不说,数学YYDS;然后我立马拥抱了并查集,哈哈哈。话不多少,卷起来。可能之前没有了解过并查集的小伙伴感觉并查集很高级,的确这个名字的确很高级,不过今天就让我们来揭开这个神秘的数据结构。没错,并查集就是一种树形的数据结构,看它的名字,合并和查询。所以它支持两种操作:查找:确定某个元素处于哪个子集。合并:将两个子集进行合并。下面,我们来初步了解一下并查集的应用场景:几个家族在一起聚会,我们只知道两个人的关系,然后给出两个人判断他们是...原创 2021-10-04 14:39:07 · 345 阅读 · 0 评论 -
拓扑排序(Topological sorting)
拓扑排序是BFS的应用,要求就是我们要从入度为零的点出发,所以我们首先将入度为零的点入队,这里我们需要将这些起始点的路径长度设置为1。然后我们也只需要该一句代码就行,统计数量的数组f[N] , 不再是记录所有可以到达该结点的路径数量,而是变成了记录所有到达该结点的路径中,经历结点数量最多的一个。说白了就是,生产者是不会有入度的,就是入度为零,消费者是不会有出度的,就是出度为零,最大食物链就是一条满足,最左端结点入度为零,最右端结点出度为零的一条路径。拓扑序就是,图中任意一对顶点u和v,若边。原创 2022-04-22 00:04:56 · 13661 阅读 · 2 评论 -
单源最短路问题---Dijkstra算法(朴素版 & 堆优化)
【模板】单源最短路径(弱化版) - 洛谷【模板】单源最短路径(标准版) - 洛谷迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家E. W. Dijkstra于1959年提出的,因此又叫狄克斯特拉算法。是一种单源最短路算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。算法流程:1.对于给定的图,我们假定所有点都不可达,因为是单源最短路,所以我们从起点开始;2.我们选取...原创 2022-04-17 23:44:08 · 1699 阅读 · 2 评论 -
深度优先搜索(DFS) --- 入门篇
在搜索算法中,DFS常常指利用递归函数方便地实现暴力枚举的算法。可以说是高级枚举;递归算法中,往往我们需要借助一个函数工作栈,这个栈是有大小的,因此如果我们的递归层数过大,很可能会爆栈,因此DFS算法通常处理的数据范围都很小。全排列问题 - 洛谷这个是一个典型的DFS问题,我们传入一个值,来代表我们执行的次数,每次按顺序枚举 1 ~ n,如果当前值没有出现过,我们就使用它,并进行标记,然后递归调用,让num值++;当num值 == n 时,说明我们找到了一个全排列,我们输出它,并进...原创 2022-03-31 00:26:34 · 1069 阅读 · 0 评论 -
深度优先搜索(DFS) --- 提高篇
让我们异或吧 - 洛谷这题首先给了我们应该树;所以,我们需要知道如何存储一棵树;我们知道树是一种特殊的图;学过数据结构的我们都知道,图是存储一共有两种方法:(1) 邻接矩阵 (2) 邻接表邻接矩阵:就是一个二维数组 , f[ i ][ j ]表示 i -> j 有边,如果边赋权值的话,就是f[ i][ j ] 的值;这个办法空间复杂度比较高,而且不是很实用(我们不用这个);邻接表:这个其实就是我们给每个结点开一个链表,进行存储,我们不考虑存储的顺序(其实就是单链.原创 2022-04-03 00:28:26 · 1576 阅读 · 0 评论 -
广度优先搜索(BFS)---入门篇
填涂颜色 - 洛谷这个题就是给我们一个图,图内有一个圈,我们将圈内的0 -> 2 即可;我们可以将图内0看成两种,一种是圈内的0,一种是圈外的0;有没有一种豁然开朗的感觉,我们考虑区分出这两种0就行了;那显然是处理圈外的圆比较简单;这个题唯一一点就是我们不能只搜一个点,因为可能会在边界存在一个突出的部分属于圈外的零;又因为圈一定在图内,那我们就包围式搜索,从边界往里搜;#include<iostream>#include<cmath>...原创 2022-04-06 00:02:14 · 694 阅读 · 0 评论 -
最小生成树(prim算法 和 kruskal算法)
例题:【模板】最小生成树 - 洛谷prim算法算法思想:#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<unordered_map>#define x first#define y second #define _for(i,s,t) for(int i = (s);i <=t ; i++)#def原创 2022-04-13 23:49:58 · 206 阅读 · 0 评论