BFS广度优先遍历
BFS的一些题
深巷wls
平平无奇
展开
-
L2-031 深入虎穴 (25 分)(广搜)(C/C++)
样例输入:133 2 3 42 5 61 71 81 902 11 101 13001 1200样例输出:12BFS的特性:最后遍历到的,一定是最深的那个门。这题需要注意道路是双向的,能从a门到b门,b门也同样可以到a门。不用考虑哪个门是出发点,直接广搜一点即可,因为BFS的特性。AC代码:#include<iostream>#include<stdlib.h>#include<cstdio>#include<v.原创 2022-04-08 15:41:21 · 1450 阅读 · 0 评论 -
P1141 01迷宫(BFS)C++
P1141 01迷宫输入2 201101 12 2输出44既然一个位置能到达另一个位置,那么反过来一样能达到,因此,可以把一个位置能到达的所有位置看成是一个连通块,在一个连通块内,任何位置所到达的格子一样,这样一来,把连通块的位置都进行标记,再搜索没标记的,再看成一个连通块,直至所有位置搜索完。关键就在vis上面,每次不用清零,直接判断有没有访问过,访问过就不用在访问了。#include<iostream>#include<stdio.h>#incl原创 2021-07-14 16:57:11 · 551 阅读 · 0 评论 -
P2802 回家(BFS)C++
P2802 回家输入输出样例输入3 32 1 11 1 01 1 3输出4参考的是某个博主的思路#include<iostream>#include<stdio.h>#include<iomanip>#include<stack>#include<queue>#include<cstdlib>#include <algorithm>#include<string.h>#原创 2021-07-14 12:22:41 · 1061 阅读 · 0 评论 -
P1443 马的遍历
P1443 马的遍历读入棋盘长宽和马的初始坐标,把马的初始坐标压入队尾设置两个数组,step和vis,step用来记录步数,vis用来标记该坐标是否被访问过,如果不标记的话会死循环然后开始bfs,在队列不为空时,对首元素进行拓展(8个方向,for循环),将拓展的元素压入队尾,首元素出队,重复操作,重复过程直到能访问到的格子都走一遍。剩下的就是不能到达的格子#include<iostream>#include<stdio.h>#include<iomani原创 2021-07-14 09:57:12 · 179 阅读 · 0 评论 -
P1807 最长路(BFS)
P1807 最长路输入输出样例输入2 11 2 1输出1#include<iostream>#include<cstdio>#include<iomanip>#include<stack>#include<queue>#include<cstdlib>#include <algorithm>#include<string.h>#include<math.h>#d原创 2021-07-14 09:26:13 · 582 阅读 · 0 评论