【HDU - 2612】Find a way(bfs)

-->Find a way

直接上Chinese

?Descriptions:

hsj和lsh最近迷上了pokemon go的游戲。在雙十一大物期中考試來臨之前,他們想抓一只稀有土撥鼠來攢攢人品(因為土撥鼠的刷新地點最近來到了哈工程)
但是由于土撥鼠過于強大,他的雷霆半月斬以及驚天浪濤沙都可以輕松的將他們兩擊敗,但是他們兩的合擊必殺技流影電光閃以及天羽屠鼠舞可以將土撥鼠打至昏迷狀態,并可將其捕獲。
但是因為這是款按時間付費的游戲,他們需要盡快捕捉到土撥鼠(即他們兩到土撥鼠的時間之和需要最少),因此他們找到了你來幫他們解決這個問題。 規定每走一步需要花費11分鐘。

Input

輸入存在多組(需使用!=EOF)
每組的第一行有兩個整數n,m(2<=n,m<=200)
接下來n行,每行包括m個字符
‘Y’表示hsj所在的位置
‘M’表示lsh所在的位置
‘.’表示可以通過的地方
‘#’表示教學樓即不能走的地方
‘@’表示稀有土撥鼠刷新的地方(地圖中存在多只稀有土撥鼠)
Output

對于每組樣例輸出他們到達土撥鼠刷新點的最小時間總和。
保證每組樣例都存在一個土撥鼠刷新點,他們兩都能到達?
Sample Input

4 4
Y.#@
....
.#..
@..M
4 4
Y.#@
....
.#..
@#.M
5 5
Y..@.
.#...
.#...
@..M.
#...#

Sample Output

66
88
66

題目鏈接:

https://vjudge.net/problem/HDU-2612

這可以說是一題兩個bfs

分別求出Y、M在這張地圖所有地方的所用時間,再求出在"@"地方的時間的最小值即可

具體操作看代碼

AC代碼

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define MEM(x,y) memset(x,y,sizeof(x))
using namespace std;
int T,n,m;
char mp[1005][1005];//原始地圖
int vis[1005][1005];//記錄人是否走過
int ytime[1005][1005];//Y 經過這個地方的時間
int mtime[1005][1005];//M 經過這個地方的時間
int dt[][2]= {{1,0},{-1,0},{0,1},{0,-1}};//四個方向
struct node
{int x,y;//坐標
};
node now,net;
node Y,M;
void bfs(int f)//
{queue<node>q;MEM(vis,0);//都要初始化,都沒走過,設為0if(f==0)// Y的情況
    {MEM(ytime,INF);q.push(Y);vis[Y.x][Y.y]=1;ytime[Y.x][Y.y]=0;}if(f==1)// M的情況
    {MEM(mtime,INF);q.push(M);vis[M.x][M.y]=1;mtime[M.x][M.y]=0;}while(!q.empty())// bfs 一樣的套路
    {now=q.front();q.pop();for(int i=0; i<4; i++)//四個方向
        {net.x=now.x+dt[i][0];net.y=now.y+dt[i][1];if(net.x>=0&&net.x<n&&net.y>=0&&net.y<m&&!vis[net.x][net.y]&&mp[net.x][net.y]!='#')//滿足條件
            {q.push(net);//入隊vis[net.x][net.y]=1;//走過了if(f==0)//Y 的路線時間ytime[net.x][net.y]=ytime[now.x][now.y]+1;if(f==1)//M 的路線時間mtime[net.x][net.y]=mtime[now.x][now.y]+1;}}}
}
int main()
{while(cin>>n>>m){for(int i=0; i<n; i++){for(int j=0; j<m; j++){cin>>mp[i][j];if(mp[i][j]=='Y'){Y.x=i;Y.y=j;}if(mp[i][j]=='M'){M.x=i;M.y=j;}}}bfs(0); //Y的路線bfs(1); //M的路線int ans=INF; //最小步數for(int i=0; i <n; i++)//搜一遍地圖,看一下"@"所在地方的時間之和,取最小值for(int j=0; j<m; j++)if(mp[i][j]=='@')ans=min(ans,ytime[i][j]+mtime[i][j]);cout<<11*ans<<endl;}return 0;
}

?

轉載于:https://www.cnblogs.com/sky-stars/p/11140928.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277378.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277378.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277378.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

getMeasuredWidth和getWidth的區別

View的getWidth()和getMeasuredWidth()有什么區別嗎&#xff1f; View的高寬是由View本身和Parent容器共同決定的。getMeasuredWidth()和getWidth()分別對應于視圖繪制的measure和layout階段。getMeasuredWidth()獲取的是View原始的大小&#xff0c;也就是這個View在XML文件中配…

php圖片地址參數錯誤,圖片上傳時一直顯示請求地址錯誤怎么辦

1、出現“請求地址錯誤”的直接原因&#xff1a;圖中$action null2.根本原因&#xff1a;url美化那一節課程&#xff0c;去掉 index.php的.htaccess 文件修改的時候&#xff0c;沒有按照老師的來寫&#xff0c;所以美化url以后獲取不到地址欄參數&#xff0c;導致$action值為n…

C#寫的WebServices可運行于樹莓派

閱讀目錄 Raspkate - 基于.NET的可運行于樹莓派的輕量型Web服務器Raspkate項目演示回到目錄Raspkate - 基于.NET的可運行于樹莓派的輕量型Web服務器 最近在業余時間玩玩樹莓派&#xff0c;剛開始的時候在樹莓派里寫一些基于wiringPi庫的C語言程序來控制樹莓派的GPIO引腳&#x…

[導入]Ms XmlDom 異步裝載Xml文件

Ms XmlDom 異步裝載Xml文件文章來源:http://blog.csdn.net/net_lover/archive/2004/07/07/36015.aspx 轉載于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2004/07/07/816151.html

Django的View(視圖)

Django的View&#xff08;視圖&#xff09; 一個視圖函數&#xff08;類&#xff09;&#xff0c;簡稱視圖&#xff0c;是一個簡單的Python 函數&#xff08;類&#xff09;&#xff0c;它接受Web請求并且返回Web響應。 響應可以是一張網頁的HTML內容&#xff0c;一個重定向&am…

高質量的期貨研究報告去哪里找?

作者&#xff1a;虎虎的小尾巴鏈接&#xff1a;https://www.zhihu.com/question/25331621/answer/205439281來源&#xff1a;知乎著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。這是個好問題&#xff0c;我曾經或者直到現在我也一直在追求高…

oracle中偏移,怎么對相同的坐標點偏移?

上面說的第三步必須保證每個點不能重復分配&#xff0c;有些難度&#xff0c;還是用過程代碼吧。CREATE TABLE t_offset asselect 1 id,1.001 x,1.002 y, 10 mark from dualunion allselect 2011 id,1.001 x,1.012 y, 31 mark from dualunion allselect 3…

設計模式之--原型模式

1.原型模式定義 原型模式非常簡單&#xff0c;定義如下&#xff1a; 用原型實例指定創建對象的種類&#xff0c;并且通過拷貝這些原型創建新的對象 2.通用類圖 原型模式的核心是實現Cloneable接口&#xff0c;此接口為JDK提供的一個標識接口&#xff0c;只有實現了此接口的類才…

搜索目錄里所有文件(包括子目錄)

搜索目錄里所有文件(包括子目錄&#xff09; 資料來源&#xff1a;http://www.cnblogs.com/jjwwww/archive/2004/09/04/39559.aspx 用到兩個函數ParseDirectory 和CreatePathListvoidParseDirectory(stringpath, stringfilter) { strin…

一張圖理解buffer與cache

轉載于:https://blog.51cto.com/11193863/2169166

oracle服務器不識別tc服務,記一次ORACLE無法啟動登陸事故

打開XSHELL 登陸ORACLE用戶1.sqlplus scott/scott 提示登陸失敗2.sqplus / as sysdba 啟動數據庫提示3.查找日志操作日志&#xff1a;$ORACLE_HOME/startup.log啟動日志&#xff1a;$ORACLE_BASE/diag/rdbms/ora11g/ora11g/trace/alert_ora11g.log (ora11g為SID值)啟動日志如果…

重構(Refactoring)技巧讀書筆記 之二

重構&#xff08;Refactoring&#xff09;技巧讀書筆記 之二<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />General Refactoring Tips, Part 2本文繼續《重構&#xff08;Refactoring&#xff09;技巧讀書筆記 之一》&#xff…

史上最全的Angular.js 的學習資源

Angular.js 的一些學習資源 基礎 官方&#xff1a; http://docs.angularjs.org angularjs官方網站已被墻&#xff0c;可看 http://www.ngnice.com/&#xff1b;官方zip下載包 http://best.factj.com/dolymood/angular-packages&#xff0c;已增加docs服務&#xff0c;輸入地址即…

BMP位圖之8位位圖(三)

起始結構 typedef struct tagBITMAPFILEHEADER { WORD bfType; //類型名&#xff0c;字符串“BM”&#xff0c; DWORD bfSize; //文件大小 WORD bfReserved1; //保留字 WORD bfReserved2; //保留字 DWORD bfOffBits; //實際位圖數據的偏移字節數&#xff0c;即前三個部分長度之…

DNN 漢化中的問題????

今天看到了一份已經漢化過的DNN但是比較奇怪&#xff0c;當第一次運行后我所指定的新數據庫中并沒有添加新的內容&#xff0c;但是網站上的確是已經漢化過了的&#xff0c;不知道它把漢化的內容放到了哪里&#xff1f;&#xff1f;&#xff1f; 另外他所漢化界面的地方&#x…

php 打印對象詳細信息,php打印顯示數組與對象的函數詳解

php打印顯示數組與對象的函數詳解發布于 2014-11-17 18:55:49 | 699 次閱讀 | 評論: 0 | 來源: 網友投遞PHP開源腳本語言PHP(外文名: Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點&…

ios開發-調用系統自帶手勢

在 iPhone 或 iPad 的開發中&#xff0c;除了用 touchesBegan / touchesMoved / touchesEnded 這組方法來控制使用者的手指觸控外&#xff0c;也可以用 UIGestureRecognizer 的衍生類別來進行判斷。用 UIGestureRecognizer 的好處在于有現成的手勢&#xff0c;開發者不用自己計…

Node.js 事件循環

Node.js 事件循環 Node.js 是單進程單線程應用程序&#xff0c;但是因為 V8 引擎提供的異步執行回調接口&#xff0c;通過這些接口可以處理大量的并發&#xff0c;所以性能非常高。 Node.js 幾乎每一個 API 都是支持回調函數的。 Node.js 基本上所有的事件機制都是用設計模式中…

全國翻譯專業資格(水平)考試

http://www.spta.gov.cn/moreksxx.jsp?lmCodeA02010205轉載于:https://www.cnblogs.com/Danilo/archive/2004/10/31/58821.html

linux文件句柄,【LINUX】使用lsof處理文件恢復、句柄以及空間釋放問題

曾經在生產上遇到過一個df 和 du出現的結果不一致的問題&#xff0c;為了排查到底是哪個進程占用了文件句柄&#xff0c;導致空間未釋放&#xff0c;首先在linux上面&#xff0c;一切皆文件&#xff0c;這個問題可以使用lsof這個BT的命令來處理(這個哈還可以來查詢文件句柄泄露…