随笔分类 -  广度优先搜索bfs

摘要:## [AcWing 1134. 最短路计数](https://www.acwing.com/problem/content/1136/) ### 一、题目描述 给出一个 N 个顶点 M 条边的 **无向无权图**,顶点编号为 1N。 问从顶点 1 开始,到其他每个 阅读全文
posted @ 2022-03-18 15:40 糖豆爸爸 阅读(117) 评论(0) 推荐(0) 编辑
摘要:AcWing 1131 拯救大兵瑞恩 一、题目描述 1944年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩。 瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图。 迷宫的外形是一个长方形,其南北方向被划分为 N 阅读全文
posted @ 2022-03-18 15:35 糖豆爸爸 阅读(129) 评论(0) 推荐(0) 编辑
摘要:##AcWing 845. 八数码 一、题目描述 在一个 3×3 的网格中,188 个数字和一个 x 恰好不重不漏地分布在这 3×3 的网格中。 例如: 1 2 3 x 4 6 7 5 8 在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存 阅读全文
posted @ 2021-09-18 10:09 糖豆爸爸 阅读(500) 评论(0) 推荐(2) 编辑
摘要:##AcWing 844. 走迷宫 一、题目描述 给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 01,其中 0 表示可以走的路,1 表示不可通过的墙壁。 最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左、右任意一个方向移 阅读全文
posted @ 2021-09-18 09:52 糖豆爸爸 阅读(828) 评论(0) 推荐(0) 编辑
摘要:题目传送门 一、题意分析 题意:给你一个n×m的迷宫g(xy范围是0n10m1),#\(不能走,\).可以走,S作为起点,现在将迷宫扩展成无穷大,扩展方法是:任意一个(x,y)位置的字符$c = g(x 阅读全文
posted @ 2021-08-17 08:10 糖豆爸爸 阅读(177) 评论(0) 推荐(2) 编辑
摘要:题目传送门 一、题意分析 二、bfs解法 1、链式前向星 #include <bits/stdc++.h> using namespace std; const int N = 10010; //10000条边 queue<int> q; bool st[N]; //走过了没 int n; //n个 阅读全文
posted @ 2021-08-13 14:34 糖豆爸爸 阅读(166) 评论(0) 推荐(0) 编辑
摘要:## 图的连通性判断 #### 总结 - 常用的判连通办法有四种,分别是并查集、dfsbfsfloyd - 最常用的是dfs、并查集 - 前三种适合稀疏图,floyd适合稠密图 ### 一、并查集 ```cpp {.line-numbers} #include using n 阅读全文
posted @ 2021-08-12 09:12 糖豆爸爸 阅读(1055) 评论(0) 推荐(0) 编辑
摘要:题目传送门 一、解题思路 1、用拓扑排序干掉非环结点 2、用dfs或者bfs找出最小环的长度 二、拓扑排序+dfs 解法 1、vector邻接表实现 #include <bits/stdc++.h> using namespace std; /** 思路:其实就是求最小环。每个点的出度都是1 阅读全文
posted @ 2021-08-11 09:07 糖豆爸爸 阅读(255) 评论(0) 推荐(0) 编辑
摘要:题目传送门 一、二叉树+bfs解法 #include <bits/stdc++.h> using namespace std; typedef pair<int, int> PII; const int N = 210; bool st[N]; //是不是走过了 int n, ans = 0x3f3 阅读全文
posted @ 2021-08-02 15:40 糖豆爸爸 阅读(80) 评论(0) 推荐(0) 编辑
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; int n, m; const int N = 310; //地图 char a[N][N]; int x, y; //Bessie的起始点 //是不是访问过了 int st[N][N]; //放 阅读全文
posted @ 2021-07-28 15:00 糖豆爸爸 阅读(68) 评论(0) 推荐(1) 编辑
摘要:题目传送门 C++代码 #include<bits/stdc++.h> using namespace std; const int N = 10; string ar[N]; //由啥 string br[N]; //变成啥 int n; //规则个数 string a, b; //原串,目标串 阅读全文
posted @ 2021-07-28 14:26 糖豆爸爸 阅读(50) 评论(0) 推荐(0) 编辑
摘要:题目传送门 理解与感悟 1、从边缘出发进行思考。 2、把外围所有0涂色干掉,再剩下的0就是被包裹住的0,这些0需要修改为2. 3、所以OI的竞赛题,几乎没有祼的模板题,都是需要一点点思维难度的。这需要进行训练,刷题,没有别的办法。 #include <bits/stdc++.h> using nam 阅读全文
posted @ 2021-07-28 13:49 糖豆爸爸 阅读(69) 评论(0) 推荐(0) 编辑
摘要:题目传送门 一、广度优先搜索解法 #include <bits/stdc++.h> using namespace std; const int N = 110; char a[N][N]; //地图 //坐标结构体 struct coord { int x, y; }; int n, m; int 阅读全文
posted @ 2021-07-28 11:45 糖豆爸爸 阅读(63) 评论(0) 推荐(0) 编辑
摘要:题目传送门 感悟与理解 1、需要上下左右进行移动的,需要使用delta变量数组,这玩意有四个方向的,也有八个方向的,还有马走日之类的,总之,一事一议吧。 //二维坐标系中每个点的上下左右变化delta坐标 int dx[4] = {0, 0, -1, 1}; int dy[4] = {1, -1, 阅读全文
posted @ 2021-07-27 09:29 糖豆爸爸 阅读(187) 评论(0) 推荐(1) 编辑
摘要:题目传送门 总结与感悟 1、查找最短路径,首选广度优先搜索,深度优先搜索和动态规划都似乎有大炮打蚊子的嫌疑,不好想,细节多。 2、广度优先搜索,一般入队列的都是一个结构体或者pair<int,int> ,因为如果只是一个整数,描述的信息量太小。 3、需要有一个st数组,用来记录是否已经走过,走了几步 阅读全文
posted @ 2021-07-27 08:59 糖豆爸爸 阅读(121) 评论(0) 推荐(1) 编辑
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; int n, m; //n*m的棋盘 int x, y; //马的位置 const int N = 410; int ans[N][N]; //到任意点需要最少走几步 //坐标 struct co 阅读全文
posted @ 2021-07-26 17:04 糖豆爸爸 阅读(60) 评论(0) 推荐(0) 编辑

Live2D
点击右上角即可分享
微信分享提示