BFS--备战蓝桥杯版h

BFS 广度优先搜索(Breadth-First-Search)

宽度优先搜索,BFS是用于图的查找算法(要求能用图表示出问题的关联性)。

BFS可用于解决2类问题:

1.从A出发是否存在到达B的路径;

2.从A出发到达B的最短路径;
整体思路

其思路为从图上一个节点出发,访问先访问其直接相连的子节点,若子节点不符合,再问其子节点的子节点,按级别顺序(一层一层)依次访问,直到访问到目标节点

· 起始:将起点(源点,树的根节点)放入队列中

· 扩散:从队列中取出队头的结点,将它的相邻结点放入队列,不断重复这一步

· 终止:当队 列为空时,说明我们遍历了所有的结点,整个图都被搜索了一追
对于所有边长度相同的情况,比如地图的模型,bfs第一次遇到目标点,此时就一定是从根节点到目标节点最短的路径(因为每一次所有点都是向外扩张一步,你先遇到,那你就一定最短)。bfs先找到的一定是最短的。但是如果是加权边的话这样就会出问题了,bfs传回的是经过边数最少的解,但是因为加权了,这个解到根节点的距离不一定最短。比如1000+1000是只有两段,1+1+1+1有4段,由于bfs返回的经过边数最少的解,这里会返回总长度2000的那个解,显然不是距离最短的路径。此时我们就应该采用Dijkstra最短路算法解决加权路径的最短路了。

练习

844. 走迷宫 - AcWing题库

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int N=110;
int g[N][N];
int d[N][N];
int n,m;
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};


int bfs()
{
	queue<int> qx,qy;
	memset(d,-1,sizeof d); 
	d[0][0]=0;
	qx.push(0);
	qy.push(0);
	
	while(!qx.empty())
	{
		int x=qx.front();qx.pop();
		int y=qy.front();qy.pop();
		for(int i=0;i<4;i++)
		{
			int nx=x+dx[i];
			int ny=y+dy[i];
			if(nx>=0&&nx<n&&ny>=0&&ny<m&&g[nx][ny]==0&&d[nx][ny]==-1)
			{
				d[nx][ny]=d[x][y]+1;
				qx.push(nx);
				qy.push(ny);
			}	
		}
	}
	return d[n-1][m-1];
}

int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>g[i][j];
		}
	}
	cout<<bfs();
	return 0;
 } 

P1746 离开中山路 - 洛谷

多源bfs

P1332 血色先锋队 - 洛谷

173. 矩阵距离 - AcWing题库

P1747 好奇怪的游戏 - 洛谷

染色问题

P1162 填涂颜色 - 洛谷

P1506 拯救oibh总部 - 洛谷

P1059 NOIP 2006 普及组 明明的随机数 - 洛谷

有限制的bfs

P2895 USACO08FEB Meteor Shower S - 洛谷

P3395 路障 - 洛谷

比较难的几个

P2658 汽车拉力比赛 - 洛谷(与二分相结合)

P1126 CERC1996 机器人搬重物 - 洛谷(增加了一个方向)

双端队列bfs

P4554 小明的游戏 - 洛谷

P4667 BalticOI 2011 Switch the Lamp On (Day1) - 洛谷

双向队列(一维与二维的转换而且变换的是0的位置)---只要是有终点和起点的都可以

P1379 八数码难题 - 洛谷

相关推荐
江畔柳前堤6 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
Forever Nore8 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
罗西的思考9 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX10 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面10 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号11 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
月光船幽幽11 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
马拉AI11 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
地平线开发者13 小时前
征程6工具链模型X86推理方式说明
算法
地平线开发者13 小时前
【征程6】校准量化中HistogramObserver解析
算法