首页 > 其他分享 >P1746 离开中山路

P1746 离开中山路

时间:2024-05-21 19:30:02浏览次数:26  
标签:dist int P1746 中山路 nx ny 离开 y1 include

传送锚点:https://www.luogu.com.cn/problem/P1746

题目背景

《爱与愁的故事第三弹·shopping》最终章。

题目描述

爱与愁大神买完东西后,打算坐车离开中山路。现在爱与愁大神在 \(x_1,y_1\) 处,车站在 \(x_2,y_2\) 处。现在给出一个 \(n \times n(n \le 1000)\) 的地图,\(0\) 表示马路,\(1\) 表示店铺(不能从店铺穿过),爱与愁大神只能垂直或水平着在马路上行进。爱与愁大神为了节省时间,他要求最短到达目的地距离(每两个相邻坐标间距离为 \(1\))。你能帮他解决吗?

输入格式

第 \(1\) 行包含一个数 \(n\)。

第 \(2\) 行到第 \(n+1\) 行:整个地图描述(\(0\) 表示马路,\(1\) 表示店铺,注意两个数之间没有空格)。

第 \(n+2\) 行:四个数 \(x_1,y_1,x_2,y_2\)。

输出格式

只有 \(1\) 行,即最短到达目的地距离。

样例 #1

样例输入 #1

3
001
101
100
1 1 3 3

样例输出 #1

4

提示

对于 \(20\%\) 数据,满足 \(1\leq n \le 100\)。

对于 \(100\%\) 数据,满足 \(1\leq n \le 1000\)。

思路

code

#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
int n;
const int maxn = 1e3 + 10;
char g[maxn][maxn];
int dist[maxn][maxn];
int x1, y1, x2, y2;
int dx[4] = { 1,0,0,-1 };
int dy[4] = { 0,1,-1,0 };
typedef pair<int, int> PII;
queue<PII> q;
void bfs(int x,int y) {//x、y为当前遍历点坐标
	q.push({x,y});
	while (!q.empty()){
		auto t = q.front();
		q.pop();
		for (int i = 0; i < 4; i++) {
			int nx = t.first + dx[i];
			int ny = t.second + dy[i];
			if (nx<0 || nx>=n || ny<0 || ny>=n) continue;
			if (dist[nx][ny] != -1) continue;//dist不等于-1,代表走过这
			if (g[nx][ny] == '1') continue;//店铺
			q.push({nx,ny}); 
			dist[nx][ny] = dist[t.first][t.second] + 1;
		}
	}                                      
}
int main()
{
	cin >> n;
	memset(dist, -1, sizeof(dist));
	for (int i = 0; i < n; i++) {
		scanf("%s", g[i]);
	}
	cin >> x1 >> y1 >> x2 >> y2;
	dist[x1 - 1][y1 - 1] = 0;//将x1和y1起始坐标标记为0
	bfs(x1 - 1, y1 - 1);
	cout << dist[x2 - 1][y2 - 1];
	return 0;
}

标签:dist,int,P1746,中山路,nx,ny,离开,y1,include
From: https://www.cnblogs.com/6Luffy6/p/18204779

相关文章

  • 【博客园发文技巧】不离开编辑页面,批量添加图片链接和设置图片大小
    参考文档:https://www.cnblogs.com/sanshi/p/3794796.html起因在博客园写文章,有时需要上传好多大图片,如果这些图片过大,则会导致页面变形。因此有一个实际的需求,能够在博客园的编辑页面,直接批量修改所有图片的大小,然后给这些图片添加链接,以便点击时转到大图。简单实现在博客园......
  • 关于前后端项目分离开发的一些思考
    开发模式前后端分离开发前端使用vue或其他的一些前端框架进行页面开发,进行打包为html文件后端使用SpringBoot开发后,进行打包也就是分离开发,分开打包部署方式分开部署前端代码结合Nginx进行部署,Nginx将请求转发到后端服务器中;结合部署这种个人认为是单机部署的一种方式,......
  • 苹果再失资深设计师,Jony Ive 团队基本离开;OpenAI 或于下周发布 AI 搜索丨 RTE 开发者
      这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点,欢迎大家留言......
  • PHP框架Laravel+Vue3+前后端分离开发模式+实战项目
    1、本实战项目采用前后端分离的开发模式,前端框架vue3,后端框架laravel10。所谓的前后端分离的开发,就是有别于利用cookie,session的基于会话机制的开发模式;前后端分离的开发模式是基于jwt的开发模式,也就是说后端的接口数据不仅可以支持web页面,也可以支持微信小程序,公众号,app等移动端......
  • Windows 防火墙是Windows操作系统中内置的网络安全功能,用于保护服务器免受网络攻击和
    Windows 防火墙是Windows 操作系统中内置的网络安全功能,用于保护服务器免受网络攻击和未经授权的访问。它可以帮助管理员限制进入和离开服务器的网络流量,以及监控网络通信并采取相应的安全措施。以下是Windows 防火墙的一些特点和功能:网络流量过滤:防火墙可以根据管......
  • 前后端分离开发和接口文档管理平台YAPI以及前端工程化(Vue-cli)
    前后端分离开发和接口文档管理平台YAPI以及前端工程化(Vue-cli)前后端分离开发需求分析=>接口定义(API接口文档)=>前后端并行开发(遵守规范)=>测试(前端、后端)=>前后端联调测试YApi1.介绍:YApi是高效、易用、功能强大的api管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服......
  • 前端师傅裸辞离开,留下我奋斗在前端一线...
    原因我在半年前入职xxxx,遇见了我的贵人,6年前端经验的程序员,具体信息不多说,从我入公司就是跟在他屁股后面学习,基本有问必答对我前端技术的提升简直可以用外挂形容,最近公司动荡不用说,基本各位公司多少都得晃两下,然后师傅也和上司有点摩擦,基本俩人在场,那气氛都是肉眼可见的尴尬,......
  • 14-前后端分离开发
     接口文档如下所示: YApi官方网址:YApiPro-高效、易用、功能强大的可视化接口管理平台YApi官方文档:YApi-教程(hellosean1025.github.io)1)添加项目 2)添加分类3)添加接口 ......
  • 又见亲人离世,缅怀我的大姨和姨父相继离开了,年仅72岁
    今年冬天的天总是特别的冷吧,元旦附近几天看到大姨住院了,我那些日子也感冒了,这次的感冒时间特别地长,总好不了,好了,一晚上睡觉没带帽子保护好,第二天又感冒了,感觉鼻子不通气,我到冬天总是体弱。听到大姨病了,当时十分担忧,想着要去看看,结果因为自己病着,相应的关注都到自己了,一感......
  • 想给组件加上进入离开动画?试试 react-transition-group
    列表是很常见的场景:如果我们想给它加上进入离开的动画效果:怎么做呢?一般我们会用react-transition-group来做。在npm官网可以看到,这个包每周有750w下载量,还是非常流行的:那这个包怎么用呢?我们写下代码试一下:npxcreate-react-apptransition-group-test用create-react-app创......