首页 > 其他分享 >01 bfs 学习笔记

01 bfs 学习笔记

时间:2024-10-18 09:42:50浏览次数:10  
标签:ch 笔记 bfs push 01 front stx sty dis

当一张图的边权只有 \(0\) 和 \(1\) 时,跑 dij 的堆优化显得比较累赘。因为只有两个取值,所以取 \(0\) 的时候在队列前面推进来,反之在后面。其他和 dij 没什么区别,时间复杂度 \(O(m)\),其中 \(m\) 是边数。

相关题目:P4554 小明的游戏

点击查看代码
void work() {
	m0(vis); mem(dis,0x3f);
	For(i,0,n-1) For(j,0,m-1) cin>>ch[i][j];
	cin>>stx>>sty>>edx>>edy; dis[stx][sty]=0;
	deque<node>q; while(!q.empty()) q.pop_front();
	q.push_front({stx,sty});
	while(!q.empty()) {
		auto [x,y]=q.front(); q.pop_front();
//		cout<<x<<' '<<y<<'\n';
		if(vis[x][y]) continue;
		vis[x][y]=1;
		For(i,1,4) {
			int X=x+dx[i],Y=y+dy[i];
			if(X>=n||X<0||Y>=m||Y<0) continue;
			int val=(ch[x][y]!=ch[X][Y]);
			if(dis[x][y]+val>=dis[X][Y]) continue;
			dis[X][Y]=dis[x][y]+val;
			if(ch[x][y]==ch[X][Y]) {
				q.push_front({X,Y});
			} else {
				q.push_back({X,Y});
			}
		}
	}
	cout<<dis[edx][edy]<<'\n';
}

标签:ch,笔记,bfs,push,01,front,stx,sty,dis
From: https://www.cnblogs.com/CodingGoat/p/18473614

相关文章

  • 01建议信
    点击查看代码Directions:SupposeyourfriendJaneisgoingtoparticipateinaspeechcontestonChineseculture.Writeherane-mailtosuggestatopicwithyourreasons,andarrangeatimetohelpherprepare.Youshouldwriteabout100wordsontheANSWER......
  • 二维 bfs 基础笔记
    一、寻找连通块1.基本思路找到一个未被走过的点,以这个点为起点,将与此点相连的所有点标记为走过,答案数\(+1\)2.代码实现#include<bits/stdc++.h>usingnamespacestd;structp{intx,y;};queue<p>q;intn,m,cnt;//最终答案为cntintdx[]={1,-1,0,0}......
  • k8s-Longhorn系统配置 20241017 -分布式存储
    目录一Longhorn存储部署1.1Longhorn概述1.2Longhorn部署1.5动态sc创建1.6测试PV及PVC1.7Ingress暴露Longhorn1.8确认验证附加Helm部署附0.1helm安装附0.2helm安装 回到顶部一Longhorn存储部署1.1Longhorn概述Longhorn是用于Kubernetes的......
  • 《使用Gin框架构建分布式应用》阅读笔记:p77-p87
    《用Gin框架构建分布式应用》学习第5天,p77-p87总结,总计11页。一、技术总结1.Go知识点(1)context2.on-premisessoftwarep80,AcontainerislikeaseparateOS,butnotvirtualized;itonlycontainsthedependenciesneededforthatoneapplication,whichmakesthe......
  • (八千字心得笔记)零基础C语言入门第一课——初识C语言
    这一课主要是让大家初步了解C语言,了解我们的开发环境,main函数,库函数,关键字,字符和字符串等内容的介绍,后面会一一讲解文章目录一.C语言是什么1.1C语言的历史二.开发环境编译型语言和解释型语言2.1编译和链接2.2编译器的选择2.2.1VS项目和源文件、头文件介绍2.2.2......
  • DAY01
    DAY01什么是计算机能按照程序运行,自动、高速处理海量数据的现代化智能电子设备;有硬件和软件组成。硬件io设备->输入输出设备图形界面的操作都离不开显卡(计算机之父)冯·诺依曼体系结构:软件:按其功能应分为:系统软件与应用软件系统软件DOS,Windows,Linux,Unix,Mac,Android,iOS......
  • 1017模拟赛
    \(T1\)题面,由于是正方形,我们不需要枚举左上和右下两个端点,只需枚举左上端点和正方形边长,而正方形边长如果用二分枚举,常数大,过不了。这里考虑矩形中一个技巧,即在矩形中充分利用已经求过的信息,故可以想到递推,设\(l[i][j]\)表示\((i,j)\)为左端点最大正方形长度,则\(l[i][j]\)最少为\(......
  • 1016模拟赛
    \(T1\)题面,首先我们先统计能放进自己的桶里的数量,然后我们注意到如果一些数不能放在自己的桶里,它放在其他哪个桶对答案无影响,所以我们看是否有需要放到别的桶里的数比别的所有桶的剩余容量之和,如果有,则\(ans-=\)这个数\(-\)别的桶的剩余容量之和,因为需要把别的桶里一些已经让我们......
  • k8s-NFS系统配置 20241017
    1、NFS服务端安装-master节点192.168.177.133#安装nfs服务端yuminstallnfs-utils-y#创建共享目录mkdir/nfs#配置nfs共享vim/etc/exports#添加以下一行/nfs*(rw,sync,no_root_squash)#指明共享目录和权限设置 #启动nfs服务,并设置开机启动systemctlstartnfs-ser......
  • 2024-2025-1 20241401 《计算机基础与程序设计》 第四周学习总结
    班级链接2024计算机基础与程序设计作业要求作业要求作业目标①门电路②组合电路,逻辑电路③冯诺依曼结构④CPU,内存,IO管理⑤嵌入式系统,并行结构⑥物理安全教材学习内容总结《计算机科学概论》第四章、第五章门:非(NOT)门、与(AND)门、或(OR)门、异或(XOR)......