当前位置: 首页 > news >正文

BFS算法的学习

一. 介绍

广度优先搜索

二. 模板

距离版:用于获取起点到达每个节点的最小距离

/** @description  bfs搜索其他点到某个点的最短路径* @param: p* @param: start* @returns int* @author yamu* @date 2025/5/8 15:23*/public int[] bfs(List<Integer>[] p, int start) {int n = p.length;int[] dist = new int[n];Arrays.fill(dist, -1);//表示不可达Deque<Integer> deque = new ArrayDeque<>();dist[start] = 0;//起点deque.add(start);while (!deque.isEmpty()) {int cur = deque.poll();for (int sub_p : p[cur]) {if (dist[sub_p] == -1) {dist[sub_p] = dist[cur] + 1;deque.add(sub_p);}}}return dist;}

层级版:用于按层搜索

/** @description bfs按层搜索 * @param: p* @param: start* @returns void* @author yamu* @date 2025/5/8 15:31*/public void bfs(List<Integer>[] p, int start) {int n = p.length;boolean[] vis = new boolean[n];//记录当前节点是否访问过Deque<Integer> deque = new ArrayDeque<>();deque.add(start);vis[start] = true;while (!deque.isEmpty()) {int size = deque.size();//本层的节点数for (int i = 0; i < size; i++) {int cur = deque.poll();//遍历当前节点下的节点for (int sub_p : p[cur]) {//访问过了if (vis[sub_p]) {continue;}deque.add(sub_p);vis[sub_p] = true;}}}}

三. 题单

转自灵神题单

  1. 3243. 新增道路查询后的最短距离 I - 力扣(LeetCode)
  2. 1311. 获取你好友已观看的视频 - 力扣(LeetCode)
  3. 1129. 颜色交替的最短路径 - 力扣(LeetCode)
  4. 1298. 你能从盒子里获得的最大糖果数 - 力扣(LeetCode)
  5. 2039. 网络空闲的时刻 - 力扣(LeetCode)
  6. 2608. 图中的最短环 - 力扣(LeetCode)
  7. 815. 公交路线 - 力扣(LeetCode)
3243 好题,bfs统计到达每个点的最短距离;由于单向道路[u -> v]都是满足 v > u,即结果具有递增性(无后效性),可以用dp只bfs
v及v相关的所有点
1311 指定层级level进行bfs
1129 好题,带状态的bfs,需要遍历相反状态的邻接表
1298 暴力 bfs + 判断一下是否访问过
2039 距离模板题
2608 距离模板题
815 好题,多起点多终点找最短路径

相关文章:

  • Android平台FFmpeg视频解码全流程指南
  • 跨平台移动开发框架React Native和Flutter性能对比
  • GuPPy-v1.2.0安装与使用-生信工具52
  • 数字孪生医疗:构建患者特异性数字孪生体路径探析
  • JVM运行时数据区域(Run-Time Data Areas)的解析
  • 关于 wordpress 统计访问量初始数值错误的解决方法
  • Qt获取CPU使用率及内存占用大小
  • typecho中的Widget设计文档
  • 17.thinkphp的分页功能
  • 广州AI数字人:从“虚拟”走向“现实”的变革力量
  • 软件工程(五):设计模式
  • 体绘制中的传输函数(transfer func)介绍
  • 网站公安备案流程及审核时间
  • Django进阶:用户认证、REST API与Celery异步任务全解析
  • flutter build apk出现的一些奇怪的编译错误
  • 探索 C++ 在行业应用与技术融合中的核心价值
  • 前端面试宝典---JavaScript import 与 Node.js require 的区别
  • 华为HCIP-AI认证考试版本更新通知
  • Open CASCADE学习|Geom2d_Curve类
  • nginx 实现动静分离
  • 七方面118项任务,2025年知识产权强国建设推进计划印发
  • 98年服装“厂二代”:关税压力下,我仍相信中国供应链|湃客Talk
  • 经彩申城!上海网络大V沙龙活动走进闵行
  • 国家主席习近平同普京总统签署关于进一步深化中俄新时代全面战略协作伙伴关系的联合声明
  • 国家矿山安全监察局发布《煤矿瓦斯防治能力评估办法》
  • 长和获准出售巴拿马运河港口以外的港口?外交部:该报道没有依据