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.pswp.cn/news/531811.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531811.shtml
英文地址,請注明出處:http://en.pswp.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…