洛谷 P1825 [USACO11OPEN]Corn Maze S(bfs)

2023-05-16

题目传送

1.这仅仅是一道加了传送门的bfs
2.仅仅加了一个传送门,就卡了我一下午
3.门存在不成对的情况。。。。。。。。。

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
const int maxn = 305;
const int inf = 0x3f3f3f3f;
const int dx[] = { 0,1,0,-1 };
const int dy[] = { 1,0,-1,0 };

struct node {
	int x, y;
	node(int x = 0, int y = 0) :x(x), y(y) {}
}cs[30][2];  //记录传送门

int n, m, qx, qy, zx, zy, fx, fy;
int map[maxn][maxn];
int step[maxn][maxn];
queue<node> q;

//找到另一个传送门
void ff(int x, int y)
{
	if (cs[map[x][y] - 'A'][0].x != x || cs[map[x][y] - 'A'][0].y != y) {
		fx = cs[map[x][y] - 'A'][0].x;
		fy = cs[map[x][y] - 'A'][0].y;
	}
	else {
		fx = cs[map[x][y] - 'A'][1].x;
		fy = cs[map[x][y] - 'A'][1].y;
	}
}

//判断传送门是否成对
bool cheak(int x, int y)
{
	return cs[map[x][y] - 'A'][1].x != 0;
}

void bfs()
{
	memset(step, inf, sizeof(step));
	step[qx][qy] = 0;
	q.push(node(qx, qy));
	while (q.size()) {
		int x = q.front().x;
		int y = q.front().y;
		q.pop();
		for (int i = 0; i < 4; i++) {
			int xx = x + dx[i];
			int yy = y + dy[i];
			if (!map[xx][yy]) continue;
			//传送
			if (map[xx][yy] >= 'A' && map[xx][yy] <= 'Z' && cheak(xx, yy)) {
				ff(xx, yy);
				if (step[fx][fy] > step[x][y] + 1) {
					step[fx][fy] = step[x][y] + 1;
					q.push(node(fx, fy));
				}
			}
			//用脚走
			else if (step[xx][yy] > step[x][y] + 1) {
				step[xx][yy] = step[x][y] + 1;
				q.push(node(xx, yy));
			}
		}
	}
}

int main(void)
{
	//freopen("D:\\in.txt", "r", stdin);
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			char ch;
			cin >> ch;
			if (ch == '.') map[i][j] = 1;
			else if (ch == '#') map[i][j] = 0;
			else if (ch == '@') {
				qx = i;
				qy = j;
				map[i][j] = 1;
			}
			else if (ch == '=') {
				zx = i;
				zy = j;
				map[i][j] = 1;
			}
			else if (ch >= 'A' && ch <= 'Z') {
				//记录传送门
				if (cs[ch - 'A'][0].x == 0) {
					cs[ch - 'A'][0].x = i;
					cs[ch - 'A'][0].y = j;
				}
				else {
					cs[ch - 'A'][1].x = i;
					cs[ch - 'A'][1].y = j;
				}
				map[i][j] = ch;
			}
		}
	}
	bfs();
	cout << step[zx][zy] << endl;
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

洛谷 P1825 [USACO11OPEN]Corn Maze S(bfs) 的相关文章

  • HDOJ 题目3848 CC On The Tree(BFS)

    CC On The Tree Time Limit 2000 1000 MS Java Others Memory Limit 125536 65536 K Java Others Total Submission s 1684 Accep
  • P1825 [USACO11OPEN]Corn Maze S 【BFS】

    题目描述 This past fall Farmer John took the cows to visit a corn maze But this wasn t just any corn maze it featured severa
  • leetcode 1345. Jump Game IV | 1345. 跳跃游戏 IV(BFS)

    题目 https leetcode com problems jump game iv 题解 好久没做 hard 了 xff0c 今天时间多 xff0c 挑战一下 用 lqy 同学的话说 xff0c 这题叫做 苦难题 xff0c 哈哈哈 暴
  • 【leetcode】44. 通配符匹配(wildcard-matching)(BFS)[困难]

    链接 https leetcode cn com problems wildcard matching 耗时 解题 xff1a 4 5 h 题解 xff1a 36 min 题意 给定一个字符串 xff08 s xff09 和一个字符模式 x
  • C语言DFS和BFS解决迷宫问题

    C语言DFS与BFS 迷宫问题 题目描述 给定一个 N times MN M 方格的迷宫 xff0c 迷宫里有 TT 处障碍 xff0c 障碍处不可通过 在迷宫中移动有上下左右四种方式 xff0c 每次只能移动一个方格 数据保证起点上没有障
  • 【4月第二周学习记录】数据结构与算法王卓-第六章图-图的遍历(邻接矩阵与邻接表,DFS与BFS)

    1 图的遍历基本思路与方法 图的遍历的定义与visited数组 常用的遍历方法 深度优先搜索遍历 Depth First Search DFS 广度优先搜索遍历 Breadth First Search BFS 2 深度优先搜索遍历 Dep
  • Oil Deposits(BFS)

    The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits GeoSurvComp works with one
  • 璀璨光滑【牛客】【题意解析+BFS+贪心】

    题目链接 中文题意 表面平静 实则暗藏玄机 而打开本题的突破口 也确确实实就在于题目的描述 也就是说 这张图的边的数目是确定的 并且这是一张连通图 而且图上的个点每个点连接出去的边的数目都是条 因为每个数都刚好只与个数在二进制位上差1 那么
  • Instrusive 【HDU - 5040】【2014 北京 BFS】

    题目链接 一道有着很多需要细节的地方需要注意的题 挺不错的 这题的数据也是给的很好 然后讲一下题意吧 题意 有一个N N的网格 有起点M和终点T 我们从起点需要走到终点 每一步需要花费的时间是单位一 但是呢 我们不能被摄影机拍摄到 摄影机是
  • LeetCode第127题解析

    给定两个单词 beginWord 和 endWord 和一个字典 找到从 beginWord 到 endWord 的最短转换序列的长度 转换需遵循如下规则 每次转换只能改变一个字母 转换过程中的中间单词必须是字典中的单词 说明 如果不存在这
  • Catowice City【Codeforces 1248 F】【BFS】

    Codeforces Round 594 Div 2 F 一开始是听闻有人说这是一道Tarjan好题 然后就点进来做了 但是想来想去 却想了个另类的法子 我们可以看到 如果N个人都要选择的话 那么每个人都只能是审判者 或者是参赛者 所以 我
  • 【算法学习笔记】17:DFS与BFS

    1 DFS 深度优先搜索常用于解决需要给出所有方案的问题 因为它的搜索顺序就是能够得到一个完整的搜索路径 方案 后回退再去搜索其它的方案 1 1 例题 排列数字 由于要求所有排列的方案 可以每次从 1 n 1 n 1 n里拿一个数字 然后记
  • 长草(Python)

    题目描述 小明有一块空地 他将这块空地划分为 n 行 m 列的小块 每行和每列的长度都为 1 小明选了其中的一些小块空地 种上了草 其他小块仍然保持是空地 这些草长得很快 每个月 草都会向外长出一些 如果一个小块种了草 则它将向自己的上 下
  • BFS(广度优先算法)——判断无向简单图中任意两点是否连通

    include
  • 仙岛求药 —— dfs 与 bfs求解

    样例输入1 8 8 样例输出1 10 样例输入2 9 6 样例输出2 1 dfs ps 使用dfs会运行超时 30组测试数据只能通过部分 其实这种最短路径 最少操作的问题最好还是靠bfs解决 import java util Scanner
  • 生成分段迷宫的算法

    I want to generate a maze that looks like this 也就是说 它由一个方向上的路径组成 然后将这些路径连接起来 我一直在寻找一种算法来生成这样的迷宫 但没有成功 具体来说 我don t想要一个这样的
  • 为迷宫墙添加碰撞

    有人可以帮我向我的精灵添加碰撞点吗 我过去有一个代码 我在图像上分层了位图 但相同的代码不能很好地集成用于物理绘制线条 而不是检测图像上黑色 灰色的位置 import random import pygame pygame init WHI
  • C++中迷宫的DFS最短路径

    我无法弄清楚如何准确地使其发挥作用 我正在尝试使用 DFS 获得到达目标的最短路径 我知道 BFS 更好 但有人要求我使用 DFS 正如您所看到的 我尝试对导致最终的所有堆栈进行比较以找到目标 但它不起作用 只有导致目标的第一个堆栈被打印
  • 在Javascript中实现迷宫生成算法[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我了解 深度优先 迷宫生成算法 但我
  • python中不规则点之间的坐标列表

    想象一下 我们为 x 和 y 随机选择两个介于 0 到 100 之间的点 例如 95 7 35 6 现在使用简单的 pygame draw line 函数 我们可以轻松地在这些点之间绘制一条没有任何间隙的线 我的问题是 我们如何找到两点之间

随机推荐

  • CentOS8 图形界面和命令行切换

    1 查看目前默认的启动默认 systemctl get default 命令行模式 multi user target 图形界面模式 graphical target 2 设置为图形界面模式 systemctl set default gr
  • Java实现微信(主、子商户模式)及支付宝支付

    一 业务需求 实现APP微信 支付宝支付 xff0c 后端需要做生成预支付单 xff0c 响应支付结果 xff1b 微信商户采用子商户模式 二 参考官方文档 微信普通商户 xff1a https pay weixin qq com wiki
  • Java判断整数是否为回文数

    回文数 xff0c 是指一个数的正序 xff08 从左到右 xff09 与其倒序 xff08 从右到左 xff09 相等的数 核心思想是把这个整数倒过来 xff0c 再与这个数进行比较 xff0c 若相等 xff0c 则此数为回文数 xff
  • geoserver集群部署

    geoserver集群部署 环境准备系统准备软件准备插件准备配置jdk安装tomcat部署geoserver安装mqgeoserver配置jms修改tomcat 启动文件新建broker xml放入cluster文件内容如下 三个节点均要新
  • Mathtype闪退、未嵌入office系统问题解决方法

    由于操作系统的设置和之前安装过的东西的不同 xff0c 每个人在安装mathtype时遇到的问题可能也不同 xff0c 本篇文章解决了mathtype的闪退 没有自动嵌入office的问题 安装过后出现的问题 xff1a 一 安装破解版后打
  • 在树莓派上搭建MQTT服务器

    一 MQTT协议 实现MQTT协议需要客户端和服务器端通讯完成 xff0c 在通讯过程中 xff0c MQTT协议中有三种身份 xff1a 发布者 xff08 Publish xff09 代理 xff08 Broker xff09 xff0
  • 树莓派和arduino的串口通信

    一 树莓派环境安装 1 安装GPIO模块 wget https span class token punctuation span span class token operator span sourceforge span class
  • Wifi模块ESP8266-01的初始化和编程环境的搭建

    ESP8266 01引脚图 xff1a Vcc接的是3 3V xff01 一 烧写AT固件 使用烧录工具插进电脑 xff0c 打开固件烧写程序 xff0c 烧入厂家提供的固件 测试 xff1a 打开串口助手XCOM xff0c 插拔TTL转
  • 阿里云平台+NodeMCU(arduino编程)实现MQTT收发【二】烧录NodeMCU

    这里首先要设置好阿里云平台 xff0c 参见上一篇文章 代码可以从这里下载 1 添加esp8266板子 文件 首选项 附加开发板管理器网址 xff0c 输入 xff1a http arduino esp8266 com stable pac
  • 阿里云平台+NodeMCU(arduino编程)实现MQTT收发【三】利用阿里云进行可视化开发

    应用开发 aliyun com 新建 输入应用名称 如果没有项目就新建一个项目 然后就是像PPT一样制作网页 xff0c 其中数据源配置需要关联产品和设备 xff0c 如下图所示 制作好之后发布即可 xff0c 如果不绑定自己的域名则需要登
  • windows10 iis自带的ftp 在使用filezilla的时候提示 550

    windows10 iis自带的ftp 在使用filezilla的时候提示 550 检查防火墙检查IIS的授权规则设置 检查防火墙 检查防火墙对FTP的支持 点击左侧允许应用和功能通过防火墙 在FTP服务器右侧打勾 检查IIS的授权规则设置
  • 【linux】debian安装apache2并创建虚拟站点

    前言 教程将会讲解如何在debian系统上安装apache2并且在80端口部署多个网站 环境准备 1 本次使用的服务器为debian10 2 睿智头脑和一双手 教程步骤 1 更新apt 这里我就不放设置更新源头的了 xff0c 网上一搜一大
  • Springboot整合富文本编辑器wangEditor(上传文件到七牛云)

    背景 最近项目上要用到富文本编辑器 xff0c 开始想用Ueditor 发现需要配置的东西比较多 xff0c 折腾了好久没弄好 xff0c 后来发现wangEditor比较好整合 xff0c 又轻又好用 xff0c 能满足大多需求 xff0
  • Debian10 设置允许root登录

    root登录 因为Bebian默认不允许 root登录 xff0c 修改文件配置 修改gmd3的登录文件 编辑文件 span class token function nano span etc gdm3 daemon conf 修改内容
  • 1487:【例 2】北极通讯网络

    1487 xff1a 例 2 北极通讯网络 时间限制 1000 ms 内存限制 65536 KB 提交数 701 通过数 321 题目描述 原题来自 xff1a Waterloo University 2002 北极的某区域共有 n 座村庄
  • 虚拟机ubuntu18.04突然无法上网了(问题解决)

    问题描述 xff1a VMware虚拟机下Ubuntu18 04突然上不了网的问题 xff1a 如下图所示 xff1a 更改这里的三种连接方式都是这样 分析 xff1a IP冲突或者配置出了问题 xff0c 需重新更新设置 解决 xff1a
  • 视频转GIF动图MATLAB源码

    闲来无事 xff0c 做一个视频转GIF的代码 xff0c 整点花活 xff0c 感觉自己做会很有意思 可以对原视频进行矩形截取 当然 xff0c 实现的方式不唯一 xff0c 此处的供借鉴使用 话不多说 xff0c 直接上代码 注释很详细
  • mybatis-plus 自定义分页

    mybatis plus 自定义分页 实现层Impl span class token annotation punctuation 64 Service span span class token keyword public span
  • 达梦数据库SQL日志分析工具Dmlog的使用

    1 使用条件 运行环境预先安装Java环境 xff1b 支持liunx和windows系统运行 说明 xff1a 推荐使用java1 8版本 xff0c linux最小化安装最少要安装打印服务组件 xff0c windows下不支持java
  • 洛谷 P1825 [USACO11OPEN]Corn Maze S(bfs)

    题目传送 1 这仅仅是一道加了传送门的bfs 2 仅仅加了一个传送门 xff0c 就卡了我一下午 3 门存在不成对的情况 span class token macro property span class token directive