时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

小乐乐觉得学习太简单了,剩下那么多的时间好无聊,于是便想打游戏。
        最近新出了一个特别火的游戏,叫吃猪,小乐乐准备玩一玩。
        吃猪游戏很简单,给定一个地图,大小为n*m,在地图中会随机出现一个火山口,只要小乐乐能逃离这个地图,他便能吃猪! 
        但吃鸡远没有那么简单:
        1.小乐乐每走一次只能上下左右四个方向中走一步。
        2.小乐乐每走一步,火山喷发的岩浆就会向四周蔓延一个格子,所有岩浆走过的地方都视为被岩浆覆盖。
        3.小乐乐碰到岩浆就会死。
        4.地图中还有很多障碍,使得小乐乐不能到达,但是岩浆却可以把障碍融化。
        5.小乐乐只有走到题目给定的终点才算游戏胜利,才能吃猪。
        小乐乐哪见过这场面,当场就蒙了,就想请帮帮他,告诉他是否能吃猪。

输入描述:

多组样例输入第一行给定n,m,(1 <= n, m <= 1000)代表地图的大小。接下来n行,每一行m个字符,代表地图,对于每一个字符,如果是'.',代表是平地,'S'代表小乐乐起始的位置,
'E'代表终点,'#'代表障碍物,'F'代表火山口。

输出描述:

输出只有一行。如果小乐乐能吃猪,输出"PIG PIG PIG!"。否则输出"A! WO SI LA!"。

示例1

输入

复制

3 3
F..
#S#
#.E

输出

复制

PIG PIG PIG!

代码:

#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-48,ch=getchar();}return x*f;
}
const int maxn = 1010;
char s[maxn][maxn];
struct edge{int to,next;
}e[maxn*maxn*2];
int tot,head[maxn*maxn];
void add(int u,int v){e[++tot].to=v;e[tot].next=head[u];head[u]=tot;
}
int dis[maxn*maxn],num[maxn][maxn],S,T,Fx,Fy;
int tim[maxn*maxn];
int dx[]={0,1,-1,0,0};
int dy[]={0,0,0,1,-1};
int main()
{int n,m,cnt=0;while(scanf("%d%d",&n,&m)!=EOF){cnt=0,tot=0;memset(head,0,sizeof head);for(int i=1;i<=n;i++){scanf("%s",s[i]+1);for(int j=1;j<=m;j++){num[i][j]=++cnt;if(s[i][j]=='S') S=cnt;if(s[i][j]=='E') T=cnt;if(s[i][j]=='F') Fx=i,Fy=j;}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){tim[num[i][j]]=abs(Fx-i)+abs(Fy-j);if(s[i][j]=='#')continue;for(int k=1;k<=4;k++){int x=i+dx[k],y=j+dy[k];if(x<=0||y<=0||x>n||y>m||s[x][y]=='#')continue;add(num[i][j],num[x][y]);}}}queue<int>q;memset(dis,0x3f,sizeof dis);q.push(S);dis[S]=0;while(!q.empty()){int x=q.front();q.pop();for(int i=head[x];i;i=e[i].next){int to=e[i].to;if(dis[x]+1>=tim[to]) continue;if(dis[to]>dis[x]+1){q.push(to);dis[to]=dis[x]+1;}}}if(dis[T]==0x3f3f3f3f) printf("A! WO SI LA!\n");else printf("PIG PIG PIG!\n");}
}

转载于:https://www.cnblogs.com/Staceyacm/p/10782059.html

小乐乐打游戏(BFS+曼哈顿距离)相关推荐

  1. 牛客网 - 小乐乐打游戏(BFS)

    链接:https://ac.nowcoder.com/acm/contest/301/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  2. 专题训练二 搜索进阶 HDU - 3085 Nightmare Ⅱ (双向BFS + 曼哈顿距离)

    HDU - 3085 Nightmare Ⅱ (双向BFS + 曼哈顿距离) Problem Description Last night, little erriyue had a horrible ...

  3. *【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐打游戏(bfs,双元bfs,思维)

    题干: 小乐乐觉得学习太简单了,剩下那么多的时间好无聊,于是便想打游戏.         最近新出了一个特别火的游戏,叫吃猪,小乐乐准备玩一玩.         吃猪游戏很简单,给定一个地图,大小为n ...

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

    题目链接:https://ac.nowcoder.com/acm/contest/301/G        我的写法是将岩浆和小乐乐加入到队列里一起搜索(先让岩浆入队),需要注意的是岩浆可以覆盖'#' ...

  5. HDU3085 Nightmare Ⅱ —— 双向BFS + 曼哈顿距离

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3085 Nightmare Ⅱ Time Limit: 2000/1000 MS (Java/Other ...

  6. HDU 3085 Nightmare Ⅱ【BFS +曼哈顿距离+综合性较强】

    Nightmare Ⅱ Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total S ...

  7. bzoj 2464: 中山市选[2009]小明的游戏(BFS)

    2464: 中山市选[2009]小明的游戏 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 963  Solved: 394 [Submit][Sta ...

  8. P4554 小明的游戏(双端bfs)

    P4554 小明的游戏https://www.luogu.com.cn/problem/P4554 #pragma warning(disable:4996) #include <iostrea ...

  9. 为什么不可以使用哈曼顿距离_用Python计算8字谜游戏中的曼哈顿距离

    我试图用Python编写一个简单的a*解算器,用于一个简单的8字谜游戏. 我用这种方式代表了我比赛的目标:goal = [[1, 2, 3], [8, 0, 4], [7, 6, 5]] 我的问题是, ...

最新文章

  1. 企业如何利用新闻类软文营销策划
  2. 修改模拟器的IMEI号
  3. python实现希尔排序
  4. 鸟哥的Linux私房菜(基础篇)- 第十六章、例行性工作排程 (crontab)
  5. 人生第一个过 5K Star 的 项目 x-spreadsheet 感谢各位大佬的支持
  6. 每天10分钟用python学数据分析_用Python做数据分析,Numpy,Pandas,matp
  7. 互联网高级Java面试总结
  8. matlab 将路径靠左,latex 图片位置靠左
  9. SBC在企业IP通信系统中的应用
  10. LPC23XX CAN波特率的计算
  11. Android Kotlin - 监听耳机的插入和拔出
  12. ARGB_8888(ARGB32)色彩格式
  13. java毕业设计苹果酒店住房管理源码+lw文档+mybatis+系统+mysql数据库+调试
  14. 三极管原理,开关电路设计原则,NPN、PNP区别及常用三极管参数
  15. 单一世界架构初探之世界地图
  16. 计算机毕业论文会计,会计毕业论文6000字
  17. 微信小程序开发 [00] 写在前面的话,疯狂唠唠
  18. 招生报名小程序开发笔记一:开发背景和技术方案的选型确定
  19. 如何查看,比较黑莓手机不同型号的feature?
  20. Python3/Python2百度网盘链接地址

热门文章

  1. RabbitMQ 入门系列(3)— 生产者消费者 Python 代码实现
  2. plt.figure()的使用
  3. LeetCode简单题之最少操作使数组递增
  4. 在Cuda上部署量化模型
  5. 华为公有云架构解决方案
  6. 2021年大数据Hive(十二):Hive综合案例!!!
  7. Python:数据集成
  8. php连接mysql页面空白_求大神: php注册页面跳转出现空白页
  9. logcat --pid xx 查看某个进程的信息
  10. colorAccent,colorPrimary,colorPrimaryDark 作用的地方