哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)G-小乐乐打游戏(双点BFS)

本文主要是介绍哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)G-小乐乐打游戏(双点BFS),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:https://ac.nowcoder.com/acm/contest/301/G

思路:双点BFS,岩浆和人都放入队列同时进行BFS,注意岩浆可以走障碍物,所以岩浆和人的判断条件不一样,还有岩浆和人同时到达终点应该不能吃猪,所以让岩浆先入队列,还有就是当岩浆先走到终点时就不能吃猪了,直接return。

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f;
const int MAXN = 1005;
int n, m, N, M, dir[4][2] = {{1,0}, {0, 1}, {-1, 0}, {0,-1}};
bool vis[MAXN][MAXN];
struct Point
{int x, y;bool op;
}fire, people, NOW, NEXT;
char MAP[MAXN][MAXN];
bool bfs()
{queue <Point> q;q.push(fire);q.push(people);while(!q.empty()){NOW = q.front();q.pop();if(NOW.op && (NOW.x == M && NOW.y == N)) return true;if(!NOW.op && (NOW.x == M && NOW.y == N)) return false;for(int i = 0; i < 4; i++){int X = NOW.x + dir[i][0], Y = NOW.y + dir[i][1];if(NOW.op){if(X >= 0 && Y >= 0 && X < n && Y < m && MAP[X][Y] != '#' && !vis[X][Y]){vis[X][Y] = true;NEXT.x = X; NEXT.y = Y;NEXT.op = NOW.op;q.push(NEXT);}}else{if(X >= 0 && Y >= 0 && X < n && Y < m && !vis[X][Y]){vis[X][Y] = true;NEXT.x = X; NEXT.y = Y;NEXT.op = NOW.op;q.push(NEXT);}}}}return false;
}
int main()
{memset(vis,false,sizeof(vis));while(~scanf("%d%d", &n, &m)){memset(vis,false,sizeof(vis));for (int i = 0; i < n; i++){for(int j = 0; j < m; j++){cin >> MAP[i][j];if(MAP[i][j] == 'S'){people.x = i; people.y = j;people.op = true;}else if(MAP[i][j] == 'F'){fire.x = i; fire.y = j;fire.op = false;}else if(MAP[i][j] == 'E')M = i, N = j;}}if(bfs()) puts("PIG PIG PIG!");else puts("A! WO SI LA!");}return 0;
}

 

这篇关于哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)G-小乐乐打游戏(双点BFS)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/698631

相关文章

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

查看MySql主从同步的偏移量方式

《查看MySql主从同步的偏移量方式》:本文主要介绍查看MySql主从同步的偏移量方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 1.mysql的主从同步方案mysqlphp为了在实现读写分离,主库写,从库读mysql的同步方案主要是通过从库读取主库的binl

MySQL主从同步延迟问题的全面解决方案

《MySQL主从同步延迟问题的全面解决方案》MySQL主从同步延迟是分布式数据库系统中的常见问题,会导致从库读取到过期数据,影响业务一致性,下面我将深入分析延迟原因并提供多层次的解决方案,需要的朋友可... 目录一、同步延迟原因深度分析1.1 主从复制原理回顾1.2 延迟产生的关键环节二、实时监控与诊断方案

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my