Uvaoj 11624 - Fire!

  1 /*************************************************************************
  2     > File Name: test.cpp
  3     > Author: HJZ
  4     > Mail: 2570230521@qq.com 
  5     > Created Time: 2014年08月03日 星期日 07时26分58秒
  6  ************************************************************************/
  7 
  8 /*
  9    题目大意:一个人joe想从迷宫中逃脱,但是迷宫中有着火的地方!joe每分钟向上下左右其中一个方向走一步,当然有火的地方和有墙的地方是不能通过的!
 10    另外,火的蔓延的方向是同一时刻向上下左右四个方向蔓延!
 11 
 12    思路:每一时刻,先将火的蔓延位置标记出来,并将新的火的位置放入队列qf中;
 13    因为某一时刻,我们将所有joe可能走的路径都放入了队列中了,假如t1时刻他能走的位置是5个,那么在t1+1时刻,根据上一时刻t1的可能位置更新t1+1
 14    时刻的可能位置,t1时刻的位置出队列q, t1+1时刻的新位置并重新进入队列!
 15 */
 16 
 17 #include <queue>
 18 #include <string>
 19 #include <cstdio>
 20 #include <cstring>
 21 #include <iostream>
 22 #include <iomanip>
 23 #include<cmath>
 24 #include <algorithm>
 25 #include<queue>
 26 #define M 1005
 27 #define mem(a) (memset((a), 0, sizeof(a)))
 28 #define get(s) fgets(s, sizeof(s)-1, stdin)
 29 
 30 using namespace std;
 31 
 32 char map[M][M];
 33 int n, m;
 34 int bg, ed;
 35 int dir[4][2]={1, 0, 0, 1, -1, 0, 0, -1};
 36 
 37 struct Point{
 38    int x, y, step;
 39    Point(){
 40      
 41    }
 42    Point(int x, int y, int step){
 43       this->x=x; 
 44       this->y=y; 
 45       this->step=step;
 46    }
 47 };
 48 queue<Point>q; queue<Point>qf;
 49 int cntF;//某一时刻,火点的位置进入队列的个数
 50 int cntP;//某一时刻,joe可走位置进入队列的个数
 51 
 52 int bfs(){
 53    while(!q.empty()) q.pop();
 54    q.push(Point(bg, ed, 1));
 55    while(1){
 56       while(!qf.empty() && cntF){
 57          Point  Fcur=qf.front();
 58          qf.pop();
 59          --cntF;
 60          int x=Fcur.x, y=Fcur.y;
 61          for(int i=0; i<4; ++i){
 62             int xx=x+dir[i][0];
 63             int yy=y+dir[i][1];
 64             if(map[xx][yy]!='F' && map[xx][yy]!='#'){
 65                map[xx][yy]='F';
 66                qf.push(Point(xx, yy, 0));
 67             }
 68          }
 69       }
 70       cntF=qf.size();
 71       while(!q.empty() && cntP){
 72             Point cur=q.front();
 73          q.pop(); --cntP; int x=cur.x, y=cur.y;
 74         if(x==1 || x==n || y==1 || y==m) return cur.step;
 75         for(int i=0; i<4; ++i){
 76           int xx=x+dir[i][1];
 77           int yy=y+dir[i][0];
 78           if(map[xx][yy]!='#' && map[xx][yy]!='F' && map[xx][yy]!='X'){
 79               map[xx][yy]='X'; 
 80               if(x==1 || x==n || y==1 || y==m) return cur.step+1;
 81               q.push(Point(xx, yy, cur.step+1)); } } }
 82           cntP=q.size();
 83       if(cntP==0)  return -1;
 84    }
 85    return -1;
 86 }
 87 
 88 int main(){
 89    int t;
 90    scanf("%d", &t);
 91    while(t--){
 92       scanf("%d%d", &n, &m);
 93       for(int i=0; i<=n+1; ++i)
 94          map[i][0]=map[i][m+1]='#';
 95       for(int i=0; i<=m+1; ++i)
 96          map[0][i]=map[n+1][i]='#';
 97       
 98       while(!qf.empty())  qf.pop();
 99       cntF=0;
100       cntP=1;
101           for(int j=0, i=1; i<=n; ++i){
102          scanf("%s", map[i]+1);
103          for(j=1; j<=m; ++j)
104             if(map[i][j]=='J'){
105                 bg=i;
106                 ed=j;
107             }
108             else if(map[i][j]=='F'){
109                 ++cntF;
110                 qf.push(Point(i, j, 0));
111             }
112          map[i][j]='#';
113       }     
114 
115         int tt=bfs();
116         if(tt!=-1)
117            printf("%d\n", tt);
118         else printf("IMPOSSIBLE\n");
119    }
120    return 0;
121 }

 

转载于:https://www.cnblogs.com/hujunzheng/p/3888581.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 版本更新工具类_报表分析工具FastReport .Net 2021年超大版本更新,实现了对.NET 5的支持...

在FastReport .NET 2021.1的新版本中&#xff0c;我们实现了对.NET 5的支持。添加了新条形码-Deutsce Post Leitcode。将RTF转换为报告对象的算法已得到显着改进。并且还添加了用于转换数字的新功能。欢迎下载体验。&#xff08;点击下方按钮下载&#xff09;立即点击下载FastR…

中国科学院大学计算机金智,金智-中国科学院大学-UCAS

发表论文(1) Carrier-Number-Fluctuation induced ultralow 1/f noise level in top-gated graphene field effect transistors, ACS Applied Materials & Interfaces, 2017, 通讯作者(2) The two timescales in the charge trapping mechanism for the hysteresiss behavi…

win7下搭建PHP mysql_简单介绍win7下搭建apache+php+mysql开发环境

环境目录&#xff1a;E:\dev​一、Apache我们下载VC11运行库的1.安装说明&#xff1a;运行apache安装程序&#xff0c;方法非常简单&#xff0c;弹安装界面后一直“next”接着会出现一个界面&#xff0c;需要填写3个内容&#xff0c;分别为&#xff1a;Network Domain、Server …

poj 3101Astronomy(圆周追击+分数最小公倍数)

1 /*2 本题属于圆周追击问题&#xff1a;3 假设已知两个圆周运动的物体的周期分别是a ,b, 设每隔时间t就会在同一条直线上 4 在同一条直线上的条件是 角度之差为 PI !5 那么就有方程 &#xff08;2PI/a - 2PI/b&#xff09;* tPI 所以就有 tab/(2|a-b|);6 …

广东省计算机应用考试试题,2015广东省计算机等级考试试题 二级C试题最新考试试题库...

1、在计算机的应用中&#xff0c;“DSS”表示( B )A、管理信息系统 B、决策支持系统C、办公自动化 D、人工智能2、计算机病毒是可以造成机器故障的( D )A、一种计算机设备 B、一种计算机芯片C、一种计算机部件 D、一种计算机程序3、防范病毒的有效手段&#xff0c;不正确的是( …

mysql查找大小写_mysql查询不区分大小写

摘自&#xff1a;http://www.jb51.net/article/70884.htm当我们输入不管大小写都能查询到数据&#xff0c;例如&#xff1a;输入 aaa 或者aaA ,AAA都能查询同样的结果&#xff0c;说明查询条件对大小写不敏感。解决方案一&#xff1a;于是怀疑Mysql的问题。做个实验&#xff1a…

poj 2492A Bug's Life(并查集)

1 /*2 目大意&#xff1a;输入一个数t&#xff0c;表示测试组数。然后每组第一行两个数字n,m&#xff0c;n表示有n只昆虫&#xff0c;编号从1—n,m表示下面要输入m行交配情况&#xff0c;每行两个整数&#xff0c;表示这两个编号的昆虫为异性&#xff0c;要交配。3 要求统计交配…

mysql 有外键 怎么插入数据_外键约束的表怎么插入数据

有外键的情况应该先添加主表数据&#xff0c;再添加副表数据。如&#xff1a;有以下两张表班级表&#xff1a;CLASSID NAME1 一班2 二班学生表&#xff1a;SID NAME CLASSID1 张三 12 李四 13 王五 2其中学生表中的CLASSID是班级表CLASSID的外键。现在要求在学生表中添加一条SI…

计算机在岗位上的应用,计算机岗位应用论文.doc

计算机岗位应用论文计算机岗位应用论文计算机岗位应用论文计算机岗位应用论文计算机岗位应用论文进入到新世纪以来,随着我国国民经济水平的提升,我国的计算机也得到了迅速的发展,计算机应用技术也已经广泛的应用到了各个行业中,并且计算机应用技术对于促进这些行业的快速发展也…

poj1703Find them, Catch them(并查集以及路径压缩)

1 /*2 题目大意&#xff1a;有两个不同的黑帮&#xff0c;开始的时候不清楚每个人是属于哪个的&#xff01;3 执行两个操作4 A a, b回答a, b两个人是否在同一帮派&#xff0c;或者不确定5 D a, b表示a, b两个人不在同一个帮派6 7 思路&#xff1a;利用并查集将相同帮…

计算机课程word教学,Word教学方法及使用技巧

Word教学方法及使用技巧来源:用户上传作者: 李志爱【摘 要】Word是一款实用的、简单的具有编辑、排版、处理各种表格与图片等功能的文字处理软件。本文就教学中会采用的一些Word的教学方法进行了简单的介绍与分析&#xff0c;并以泰山版初中计算机的教学计划为例&#xff0c;重…

poj2186Popular Cows(Kosaraju算法--有向图的强连通分量的分解)

1 /*2 题目大意&#xff1a;有N个cows, M个关系3 a->b 表示 a认为b popular&#xff1b;如果还有b->c, 那么就会有a->c 4 问最终有多少个cows被其他所有cows认为是popular&#xff01;5 6 思路&#xff1a;强连通分量中每两个节点都是可达的&#xff…

yum删除mysql数据库_MySQL数据库之Centos中彻底删除Mysql(rpm、yum安装的情况)

本文主要向大家介绍了MySQL数据库之Centos中彻底删除Mysql(rpm、yum安装的情况) &#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习MySQL数据库有所帮助。我用的centos6&#xff0c;mysql让我整出了各种问题&#xff0c;我想重装一个全新的mysql&#xff0c;yum…

计算机视觉领域常见期刊和会议,计算机视觉领域常见期刊和会议

会议&#xff1a;ICCV&#xff1a; IEEE International Conference on Computer Vision(每两年举办一次&#xff0c;由IEEE主办&#xff0c;百度百科&#xff1a;https://baike.baidu.com/item/iccv/7054436?fraladdin&#xff0c;ICCV 2017&#xff1a;http://iccv2017.thecv…

mysql怎么新增_mysql怎么新增用户

匿名用户1级2018-01-27 回答展开全部首先以root身份登录到MySQL服务器中。$ mysql -u root -p当验证提示出现的时候&#xff0c;输入MySQL的root帐号的密码。创建一个MySQL用户使用如下命令创建一个用户名和密码分别为"myuser"和"mypassword"的用户。mysql…

江西财经大学计算机排名2019,2019年全国商科院校评价报告出炉 江西财经大学排名第七...

中国江西网/江西头条新闻客户端讯 记者郑周贇报道&#xff1a;6月5日&#xff0c;江西财经大学应用统计研究中心发布了2019年全国商科院校评价报告&#xff0c;江西财经大学在46所指标数据完整的商科院校中综合得分排名第七。该报告权衡了指标的完备性和可获得性&#xff0c;确…

Uvaoj10054 - The Necklace

1 /*2 题意&#xff1a;打印欧拉回路&#xff01;3 思路&#xff1a;开始时不明白&#xff0c;dfs为什么是后序遍历&#xff1f; 4 因为欧拉回路本身是一条回路&#xff0c;那么我们在dfs时&#xff0c;可能存在提前找到回路&#xff0c;这条回路可能不是欧拉回路&…

w7计算机应用放大按键,Win7窗口最大化和最小化快捷键是什么

Win7窗口最大化和最小化快捷键是什么Win7有很多快捷键&#xff0c;你都知道多少呢&#xff1f;今天小编给大家科普的是win7窗口最大化和最小化快捷键&#xff0c;下面就一起来了解看看吧&#xff01;Windows 键 方向键“↑”使当前使用的窗口最大化。Windows 键 方向键“↓”…

s7-1200跟mysql_让西门子S7-1200直接连接MySQL数据库!!!

最近项目上有个需求&#xff0c;要把采集的数据存储到数据库中&#xff0c;当前西门子有很多方法&#xff0c;必读IDB&#xff0c;还有通过WINCC的脚本&#xff0c;第三方的软件等等&#xff0c;但是随着发展&#xff0c;有些需求希望设备直接到数据库&#xff0c;比如云端的RD…

uva oj 567 - Risk(Floyd算法)

1 /*2 一张有20个顶点的图上。3 依次输入每个点与哪些点直接相连。4 并且多次询问两点间&#xff0c;最短需要经过几条路才能从一点到达另一点。5 6 bfs 水过7 */8 #include<iostream>9 #include<cstring> 10 #include<vector> 11 #include<cstdio> 12…