随笔分类 - 广度优先搜索bfs
摘要:## [ . 最短路计数](https://www.acwing.com/problem/content/1136/) ### 一、题目描述 给出一个 个顶点 条边的 **无向无权图**,顶点编号为 到 。 问从顶点 开始,到其他每个
阅读全文
摘要: 拯救大兵瑞恩 一、题目描述 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩。 瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图。 迷宫的外形是一个长方形,其南北方向被划分为
阅读全文
摘要:## . 八数码 一、题目描述 在一个 的网格中, 这 个数字和一个 恰好不重不漏地分布在这 的网格中。 例如: 1 2 3 x 4 6 7 5 8 在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存
阅读全文
摘要:## . 走迷宫 一、题目描述 给定一个 的二维整数数组,用来表示一个迷宫,数组中只包含 或 ,其中 表示可以走的路, 表示不可通过的墙壁。 最初,有一个人位于左上角 处,已知该人每次可以向上、下、左、右任意一个方向移
阅读全文
摘要:题目传送门 一、题意分析 二、bfs解法 1、链式前向星 #include <bits/stdc++.h> using namespace std; const int N = 10010; //10000条边 queue<int> q; bool st[N]; //走过了没 int n; //n个
阅读全文
摘要:## 图的连通性判断 #### 总结 - 常用的判连通办法有四种,分别是并查集、、、 - 最常用的是、并查集 - 前三种适合稀疏图,适合稠密图 ### 一、并查集 ```cpp {.line-numbers} #include using n
阅读全文
摘要:题目传送门 一、解题思路 1、用拓扑排序干掉非环结点 2、用或者找出最小环的长度 二、拓扑排序+dfs 解法 1、vector邻接表实现 #include <bits/stdc++.h> using namespace std; /** 思路:其实就是求最小环。每个点的出度都是1
阅读全文
摘要:题目传送门 一、二叉树+bfs解法 #include <bits/stdc++.h> using namespace std; typedef pair<int, int> PII; const int N = 210; bool st[N]; //是不是走过了 int n, ans = 0x3f3
阅读全文
摘要:题目传送门 #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]; //放
阅读全文
摘要:题目传送门 C++代码 #include<bits/stdc++.h> using namespace std; const int N = 10; string ar[N]; //由啥 string br[N]; //变成啥 int n; //规则个数 string a, b; //原串,目标串
阅读全文
摘要:题目传送门 理解与感悟 1、从边缘出发进行思考。 2、把外围所有0涂色干掉,再剩下的0就是被包裹住的0,这些0需要修改为2. 3、所以OI的竞赛题,几乎没有祼的模板题,都是需要一点点思维难度的。这需要进行训练,刷题,没有别的办法。 #include <bits/stdc++.h> using nam
阅读全文
摘要:题目传送门 一、广度优先搜索解法 #include <bits/stdc++.h> using namespace std; const int N = 110; char a[N][N]; //地图 //坐标结构体 struct coord { int x, y; }; int n, m; int
阅读全文
摘要:题目传送门 感悟与理解 1、需要上下左右进行移动的,需要使用delta变量数组,这玩意有四个方向的,也有八个方向的,还有马走日之类的,总之,一事一议吧。 //二维坐标系中每个点的上下左右变化delta坐标 int dx[4] = {0, 0, -1, 1}; int dy[4] = {1, -1,
阅读全文
摘要:题目传送门 总结与感悟 1、查找最短路径,首选广度优先搜索,深度优先搜索和动态规划都似乎有大炮打蚊子的嫌疑,不好想,细节多。 2、广度优先搜索,一般入队列的都是一个结构体或者pair<int,int> ,因为如果只是一个整数,描述的信息量太小。 3、需要有一个st数组,用来记录是否已经走过,走了几步
阅读全文
摘要:题目传送门 #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
阅读全文