Description

一天, 一个画家在森林里写生,突然爆发了山洪,他需要尽快返回住所中,那里是安
全的。
森林的地图由R行C列组成,空白区域用点“.”表示,洪水的区域用“*”表示,而
岩石用“X”表示,另画家的住所用“D”表示,画家用“S”表示。
有以下几点需要说明:
1、 每一分钟画家能向四个方向移动一格(上、下、左、右)
2、 每一分钟洪水能蔓延到四个方向的相邻格子(空白区域)
3、 洪水和画家都不能通过岩石区域
4、 画家不能通过洪水区域(同时也不行,即画家不能移到某个格子,该格子在画家达到的同时被洪水蔓延到了,这也是不允许的)
5、 洪水蔓不到画家的住所。
给你森林的地图,编写程序输出最少需要花费多长时间才能从开始的位置赶回家中。
 

Input

输入第一行包含两个整数R和C(R,C<=50)。
接下来R行每行包含C个字符(“.”、“*”、“X”、“D”或“S”)。地图保证只有一个“D”和一个“S”。

Output

输出画家最快安全到达住所所需的时间,如果画家不可能安全回家则输出“KAKTUS”。
 

Sample Input

输入1:
3 3
D.*
...
.S. 输入2:
3 3
D.*
...
..S 输入3:
3 6
D...*.
.X.X..
....S.

Sample Output

输出1:
3 输出2:
KAKTUS 输出3:
6

  这道题主要考的是bfs和预处理,我们模拟一下就能过,因为它的数据太蒻。

  首先,我们读入整个地图,不断地扫描整个地图,然后每一次发现岩浆就将它合法扩散。

  然后我们处理人,这就要跑一遍bfs了,找到就输出,不然就输出KAKTUS。

下面上代码:

#include<iostream>
#include<cstdio>
using namespace std;
int tim,n,m,last;
bool p;
char mp[][][];
void before(){
for(int i=;i<=;i++){
for(int j=;j<=n;j++){
for(int k=;k<=m;k++){
if(mp[j][k][i-]=='*'){
if(mp[j+][k][i]!='D'&&mp[j+][k][i]!='X') mp[j+][k][i]='*';
if(mp[j][k+][i]!='D'&&mp[j][k+][i]!='X') mp[j][k+][i]='*';
if(mp[j-][k][i]!='D'&&mp[j-][k][i]!='X') mp[j-][k][i]='*';
if(mp[j][k-][i]!='D'&&mp[j][k-][i]!='X') mp[j][k-][i]='*';
}
}
}
}
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
cin>>mp[i][j][];
for(int k=;k<=;k++){
mp[i][j][k]=mp[i][j][k-];
}
}
}
before();
while(tim<=){
tim++;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(mp[i][j][tim-]=='S'){
if(mp[i+][j][tim]=='D'){
cout<<tim;
return ;
}
if(mp[i][j+][tim]=='D'){
cout<<tim;
return ;
}
if(mp[i-][j][tim]=='D'){
cout<<tim;
return ;
}
if(mp[i][j-][tim]=='D'){
cout<<tim;
return ;
}
if(mp[i+][j][tim]=='.') mp[i+][j][tim]='S';
if(mp[i][j+][tim]=='.') mp[i][j+][tim]='S';
if(mp[i-][j][tim]=='.') mp[i-][j][tim]='S';
if(mp[i][j-][tim]=='.') mp[i][j-][tim]='S';
}
}
}
}
cout<<"KAKTUS";
}

谢谢阅读

题解1235. 洪水 (Standard IO)的更多相关文章

  1. JZOJ 5326. LCA 的统计 (Standard IO)

    5326. LCA 的统计 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description Input Output S ...

  2. JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)

    5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...

  3. JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)

    5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...

  4. JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)

    5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...

  5. JZOJ 5257. 小X的佛光 (Standard IO)

    5257. 小X的佛光 (Standard IO) Time Limits: 2000 ms Memory Limits: 524288 KB Description Input Output Sam ...

  6. JZOJ 5258. 友好数对 (Standard IO)

    5258. 友好数对 (Standard IO) Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description I ...

  7. JZOJ 1349. 最大公约数 (Standard IO)

    1349. 最大公约数 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 小菜的妹妹小诗就要读小学了!正所谓 ...

  8. JZOJ 1736. 扑克游戏 (Standard IO)

    1736. 扑克游戏 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Description 有一棵无穷大的满二叉树,根为sta ...

  9. JZOJ 1776. 经济编码 (Standard IO)

    1776. 经济编码 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Description 为降低资料储存的空间或增加资料传送 ...

随机推荐

  1. 《剑指offer》面试题14 调整数组顺序使奇数位于偶数前面 Java版

    (输入整数数组,使所有奇数位于前半部分,所有偶数位于后半部分.) 我的方法:想到用两个下标分别表示奇数和偶数的界线,一个在开头,一个在末尾,判断每一个数字的类别,然后将它放入对应的范围内,移动下标,直 ...

  2. 如何在nuxt中添加proxyTable代理

    背景 在本地开发vue项目的时候,当你习惯了proxyTable解决本地跨域的问题,切换到nuxt的时候,你会发现,添加了proxyTable设置并没有什么作用,那是因为你是用的vue脚手架生成的vu ...

  3. Windows下的vue-devtools工具的安装

    详细教程在这个链接里: https://www.cnblogs.com/xqmyhome/p/10972772.html

  4. 谷歌浏览器安装插件时出现:程序包无效:“CRX_HEADER_INVALID" 后的解决办法

    以安装书签管理插件Neater Bookmarks为例: 1.下载:网址http://www.cnplugins.com/zhuanti/sixbookmarksintroduce.html 2.将下 ...

  5. Add JWT Bearer Authorization to Swagger and ASP.NET Core

    Add JWT Bearer Authorization to Swagger and ASP.NET Core     If you have an ASP.NET Core web applica ...

  6. spark复习笔记(5):API分析

    0.spark是基于hadoop的mr模型,扩展了MR,高效实用MR模型,内存型集群计算,提高了app处理速度. 1.特点:(1)在内存中存储中间结果 (2)支持多种语言:java scala pyt ...

  7. javascript中无法将string转化为json对象

    在一次项目之中,我要对请求的相应做一些处理,得到的响应差不多是这中格式'{total:1,result:[{"age":1}]}'.可以看到我拿到的这个相应和JSON的格式是非常相 ...

  8. Nginx处理前端跨域(补充)

    在之前的博客中提到了用nginx来处理前后端跨域问题,用Nginx代理请求,处理前后端跨域 ,虽然解决当时了问题,但是在实际使用中还是不好用,当时应对的只是对单接口的处理,如果一个页面需要调用两个不同 ...

  9. javaweb各种框架组合案例(九):springboot+tk.mybatis+通用service

    一.项目结构 二.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  10. 安装kali linux 后出现文字乱码问题

    在安装kali时我选择中文安装,结果安装完成后出现文字乱码现象 在经过上网查询后,采用了CSDN博客站中的 stubbornness1219 这位博主的解决方案成功将问题解决. 解决方案:终端下执行s ...