
DFS和BFS
文章平均质量分 69
搜索算法
gzcszzx
c++
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
记忆化搜索
引入 记忆化搜索,是最容易写,也是效率较高的一种做法。 虽然本质上是DFS这种搜索的思路,但其对搜索过的状态进行记录,从而完成对未知状态的推导,实际上也是一种DP的思想。 例题-滑雪 洛谷P1434 [SHOI2002]滑雪(传送门) 题目描述 Michael喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是转载 2021-05-11 23:00:31 · 299 阅读 · 0 评论 -
洛谷P1135 奇怪的电梯
题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第ii层楼(1 \le i \le N)(1≤i≤N)上有一个数字K_i(0 \le K_i \le N)Ki(0≤Ki≤N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3, 3 ,1 ,2 ,53,3,1,2,5代表了K_i(K_1=3,K_2=3,…)Ki(K1=3,K2=3,…),从11楼开始。在11楼,按“上”可以到44原创 2021-01-12 09:31:44 · 257 阅读 · 0 评论 -
洛谷P1825 [USACO11OPEN]Corn Maze S
题目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasn't just any corn maze: it featured several gravity-powered teleporter slides, which cause cows to teleport instantly from one point in the maze to another. The slides work i原创 2021-01-12 09:27:04 · 206 阅读 · 0 评论 -
信息学奥赛一本通1250:The Castle
【题目描述】 一座城堡被分成m*n个方块(m≤50,n≤50),每个方块可有0~4堵墙(0表示无墙)。下面示出了建筑平面图: 图中的加粗黑线代表墙。几个连通的方块组成房间,房间与房间之间一定是用黑线(墙)隔开的。 现在要求你编一个程序,解决以下2个问题: 1、该城堡中有多少个房间? 2、最大的房间有多大? 【输入】 平面图用一个数字表示一个方块(第1个房间用二进制1011表示,0表示无东墙,用十进制11表示)。 第一行一个整数m(m≤50),表示房子南北方向的长度。 第二行一个整原创 2021-01-07 09:01:01 · 318 阅读 · 0 评论 -
BFS
AcWing 847. 图中点的层次 给定一个n个点m条边的有向图,图中可能存在重边和自环。 所有边的长度都是1,点的编号为1~n。 请你求出1号点到n号点的最短距离,如果从1号点无法走到n号点,输出-1。 输入格式 第一行包含两个整数n和m。 接下来m行,每行包含两个整数a和b,表示存在一条从a走到b的长度为1的边。 输出格式 输出一个整数,表示1号点到n号点的最短距离。 数据...原创 2019-12-22 11:15:59 · 159 阅读 · 0 评论 -
dfs 树的各种搜索
一、查找树根 树根的入度为0。输入数据时记录即可。 一本通:1336:【例3-1】找树根和孩子 二、DFS序 void dfs(int x){ a[++m]=x; //a数组存储dfs序 v[x]=1; //记录点x被访问过 for (int i=h[x]; i!=-1; i=ne[i]){ int y=...原创 2019-12-21 10:40:15 · 414 阅读 · 0 评论 -
树的重心
树的重心原题链接 #include <bits/stdc++.h> using namespace std; const int N=100000+10; //因为是双向边 int h[N],e[2*N],ne[2*N],idx,ans=N; bool b[N];//每个结点的访问标记 int n; //加入a到b的一条边 void add(int a,int b){ e...原创 2019-11-30 21:50:28 · 187 阅读 · 0 评论 -
DFS和BFS
BFS广度优先搜索 1. 空间是2^n,是指数级别的 空间很大 2.不会有爆栈的风险 3.可以搜最短 、最小 BFS算法,即广度优先搜索,它和深度优先搜索恰恰相反,它是一种适用于图型结构的搜索,它和数据结构队列紧密向量. 对于这种算法而言,它主要的步骤大致如下所示: 1. 找到当前可以拓展的点,将它放入候选队列之中. 2. 每次选取候选队列的队头,作为当前状态. BFS性质 ...原创 2019-09-14 20:09:39 · 180 阅读 · 0 评论