算法:搜索与图论
文章平均质量分 91
搜索与图论算法
wmy0217_
2023天天开心(♡˙︶˙♡)
展开
-
hdu 2612 Find a way(双起点bfs)
Find a way#include<iostream>#include<queue>#include<cstring>using namespace std;typedef pair<int,int> PII;int dx[4] = {0,-1,0,1}, dy[4] = {-1,0,1,0};const int N = 205;char g[N][N];int d1[N][N],d2[N][N];int n,m;void b原创 2020-08-11 09:44:51 · 182 阅读 · 0 评论 -
最短路模型(bfs)
文章目录AcWing 1076. 迷宫问题AcWing 188. 武士风度的牛AcWing 1100. 抓住那头牛AcWing 1076. 迷宫问题在求最短路的时候需要存储某个点是由哪个点更新过来的。#include<iostream>#include<cstring>#define x first#define y secondusing namespace std;const int N = 1005;typedef pair<int,int>原创 2020-07-15 11:40:25 · 1148 阅读 · 0 评论 -
求连通块问题(flood fill、dfs)
文章目录AcWing 1097. 池塘计数AcWing 1098. 城堡问题AcWing 1106. 山峰和山谷AcWing 1097. 池塘计数#include<iostream>#include<queue>using namespace std;const int N = 1005;#define x first#define y secondtypedef pair<int,int> PII;char g[N][N];queue<PI原创 2020-07-15 11:01:17 · 273 阅读 · 0 评论 -
最小步数问题(BFS)
文章目录引入AcWing 845. 八数码AcWing 1107. 魔板引入最小步数问题也是通过bfs求最短路的问题。但之前我们遇到的bfs求最短路都是只有一张图,所有状态都在一个图内,例如走迷宫问题。BFS应用——走迷宫而最小步数问题的每个状态都分别对应一张图。那么怎样表示这些状态就是一个难点。通常我们会借用哈希表来表示状态。AcWing 845. 八数码补充一个小技巧:设元素x在一维数组的下标为index,二维数组的下标为(row,col),(ps:已知二维数组长度为n * m)一维原创 2020-07-13 20:00:43 · 1400 阅读 · 0 评论 -
二分图算法总结(染色法、匈牙利算法)
文章目录二分图算法框架染色法匈牙利算法二分图算法框架二分图: 所有的点可以分为两个集合V1、V2,图中任意一条边的两个顶点分别在不同的集合,即任意一个集合的内部不能有边。二分图中不含奇数环(奇数环: 边数为奇数的环)解释一下! 如下图:) 如果 A 放到 V1 集合,B 放到 V2 集合,那么 C 应该放到哪个集合呢,很明显,C 与 A、B 都有边,放哪个集合都不行!!!染色法...原创 2020-04-15 18:49:18 · 4341 阅读 · 3 评论 -
最小生成树算法总结
文章目录最小生成树算法框架朴素版primkruskal最小生成树算法框架什么是最小生成树?一个图有 n 个结点,很多条边。最小生成树需要包含原图中的 n 个结点,并且有保持图连通的最少的边,且使这个树的权值达到最小。遇到稠密图就用朴素版prim,稀疏图就用kruskal即可,堆优化版的prim没有必要掌握。朴素版prim朴素版 prim 和 dijkstra 算法很像。dijks...原创 2020-04-14 15:55:02 · 1203 阅读 · 1 评论 -
最短路算法总结(超详细~)
文章目录最短路算法框架朴素Dijkstra算法堆优化版Dijkstra算法最短路算法框架最短路有五种算法,分别适用不同的情况。单源最短路: 求一个点到其他点的最短路多源最短路: 求任意两个点的最短路稠密图用邻接矩阵存,稀疏图用邻接表存储。稠密图: m 和 n2 一个级别稀疏图: m 和 n 一个级别朴素Dijkstra算法Dijkstra算法是通过 n 次循环来确定 n 个点...原创 2020-04-11 23:09:44 · 38311 阅读 · 23 评论 -
拓扑排序
拓扑排序:对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。排序规则:1、每个顶点只出现一次2、如果点...原创 2020-04-09 15:12:42 · 484 阅读 · 0 评论 -
DFS应用—全排列
AcWing 842. 排列数字给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1这道题也就是搜索 1~n 的一个全排列问题按...原创 2020-04-08 23:21:09 · 698 阅读 · 0 评论 -
BFS应用——走迷宫
AcWing 844. 走迷宫给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角(n, m)处,至少需要移动多少次。数据保证(1, 1)处和(n, m)处的数字为0,且一定至少存在一条通路。输入格式...原创 2020-03-21 11:49:33 · 640 阅读 · 1 评论