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

2022迷宫--反向bfs-最短路效应+传送门

bfs先到的点一定是最短的,因为他是向外扩散,每一层每一层的扩散,和dfs本质区别

终点b(vis兼路径长)设为1 

#include<bits/stdc++.h>
#define inf 5e5+11
using namespace std;
typedef long long ll;
typedef pair<ll,int> PII;
int n,m;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int b[2011][2011];
vector<pair<int,int> > a[2011][2011];
ll s;
int c;
queue<pair<int,int> > q;
void bfs()///bfs最短路效应 
{
	while(q.size())
	{
		int x=q.front().first;
		int y=q.front().second;
		s+=b[x][y]-1;///终点b(vis兼路径长)设为1 
		q.pop();
		for(int i=0;i<4;i++)
		{
			int wx=x+dx[i];
			int wy=y+dy[i];
			if(wx>=1&&wx<=n&&wy>=1&&wy<=n&&!b[wx][wy])///wxwy原来没有被走过,现在就是最短 
			{
				b[wx][wy]=b[x][y]+1;
				q.push({wx,wy});
			}
		}
		for(int i=0;i<a[x][y].size();i++)///走传送门 
		{
			pair<int,int> t=a[x][y][i];
			int tx=t.first;
			int ty=t.second;
			if(b[tx][ty]) continue;///原来走过就不用传了,因为最短路 
			b[tx][ty]=b[x][y]+1;
			q.push({tx,ty});
		}
		
	}
	return;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
		int dx,dy,tx,ty;
		cin>>dx>>dy>>tx>>ty;
		a[dx][dy].push_back({tx,ty});///储传送门 
		a[tx][ty].push_back({dx,dy});
	}
	b[n][n]=1;
	q.push({n,n});
	bfs();
	printf("%.02lf",(double)s/1.0/n/n);
    return 0;
}

相关文章:

  • JVM中常量池和运行时常量池、字符串常量池三者之间的关系
  • 探索 PyTorch 中的 ConvTranspose2d 及其转置卷积家族
  • C++编程指南28 - 使用 std::async() 启动并发任务
  • 【二分查找 寻找首端】P3718 [AHOI2017初中组] alter|普及+
  • JVM之工具篇
  • 宇树人形机器人开源模型
  • socket编程与TCP协议
  • 前端面试:富文本里面, 是如何做到划词的?
  • kotlin中的模块化结构组件
  • Pytorch中矩阵乘法使用及案例
  • 【21】单片机编程核心技巧:if语句逻辑与真假判断
  • HCIA-12.ACL原理与配置
  • 分治算法区
  • Linux云计算SRE-第二十周
  • ARTKIT 开源程序是由 BCG X 开发的 Python 框架,用于自动对 Gen AI 应用程序进行基于提示的测试和评估。
  • 聊一聊binder传递文件fd原理及新版本性能优化
  • 【QT】事件系统入门——QEvent 基础与示例
  • NandFlash 坏块检测工具记录
  • 高频面试题(含笔试高频算法整理)基本总结回顾41
  • 字符最大间隔排列
  • 中国航天员乘组完成在轨交接,神十九乘组将于29日返回地球
  • 南阳市委原书记朱是西被“双开”:搞劳民伤财的“政绩工程”
  • 上海虹桥至福建三明直飞航线开通,飞行时间1小时40分
  • 王毅会见乌兹别克斯坦外长赛义多夫
  • 五矿地产:今年要确保债务“不爆雷”、交付“不烂尾”
  • 政治局会议:创新推出债券市场的“科技板”,加快实施“人工智能+”行动