小菡很聰明,所以他打acm非常給力,經常偷偷學習到深夜。
他是如此的努力學習,以至於他根本就沒有時間完整的逛過學校。
有一天,他聽說科大湖的黑天鵝非常好看,由於沒有女朋友,他便獨自乙個人去了。
然而他還在專心致志的觀賞黑天鵝,絲毫沒有意識到集訓還有 k 分鐘就要開始了,不幸的是剛好小菡是乙個路痴。
你覺得他在 k 分鐘內可以趕到創客參加集訓嗎?
如果可以,他最少要花多少時間才可以回到創客空間參加集訓呢?這樣子的路徑有多少條?
測試資料第一組為t(1 <= t <= 100),表示測試樣例組數。
對於每組測試樣例:
第一行輸入為三個正整數 n m k(1 <= n,m <= 1000,0 <= k <= 10000),n,m表示地圖的長和寬,k表示最多允許花費在路上的時間(在路上花費的時間剛好為k也合法)。
接下來n行輸入地圖,其中包含有符號『*』、『#』、『l』、'c'。
*:表示可以允許走動的空間。
#:表示障礙物,無法走動的空間。
l:表示科大湖,即小菡的起點,保證有且僅有乙個。
c:表示創客空間,即小菡的終點,保證有且僅有乙個。
小菡走動的計時是從乙個空間到另乙個空間為一分鐘。開始時,小菡已經站在了起點上。當移動時間等於k時剛好到達終點依然視為合法。
(注意:小菡只能往上下左右四個方向走動。)
輸出形式為「case #x: 」(不包含引號),x表示對應第x個樣例。
如果小菡在 k 分鐘內無法回到創客,則輸出-1。
否則,輸出小菡回到創客花費的最短時間,和滿足該最短時間的路徑條數。
4
2 2 3
l**c
4 4 10
l***
****
****
***c
4 4 8
l*##
#***
###*
c***
4 4 10
l*##
#***
###*
c***
case #1: 2 2
case #2: 6 20
case #3: -1
case #4: 9 1
#include#include#includeusing namespace std;
const int maxn = 1005;
char mp[maxn][maxn];
int dis[maxn][maxn];
//初始化距離矩陣,0代表起點,-1代表牆,n代表從起點到這一點的距離(n=1,2,3...n)
int t,n,m,k,cnt;
struct node
};//
void find(int x,int y)
if(dis[x][y] == -1) return;
if(dis[x + 1][y] + 1 == dis[x][y])
find(x + 1,y);
if(dis[x - 1][y] + 1 == dis[x][y])
find(x - 1,y);
if(dis[x][y + 1] + 1 == dis[x][y])
find(x,y + 1);
if(dis[x][y - 1] + 1 == dis[x][y])
find(x,y - 1);
}}void bfs(int x,int y)else}}
}}int main()
int sx,sy,ex,ey;
for(int i = 0;i < m; i++)
if(mp[i][j] == 'c')}}
bfs(sx,sy);
if(dis[ex][ey] > k || dis[ex][ey] == -1) printf("case #%d: -1\n",case);
else
printf("\n");}*/
find(ex,ey);//從終點向起點搜尋
printf("case #%d: %d %d\n",case,dis[ex][ey],cnt);
}} return 0;
}
最短路 求最長最短路,求最短路的路徑
hdu 1595 find the longest of the shortest include include include include include include include include include include include include include defi...
BFS和順序佇列求最短路徑
資料結構的課程開始也有一段時間了,第一次實驗作業中,有這樣一道題 大意是說給定兩個數軸上的點m,n.限定m的移動方式有3種 左移一步 即mnew m 1 右移一步 即mnew m 1 右跳一步 即mnew m 2 問m最少移動幾次可以到達n 初次看題我沒想到用哪種資料結構,自己學得慢 與老師無瓜.因...
60 BFS的應用 求最短路徑
這幾篇將主要根據我們之前所學的圖的遍歷演算法來解決一些問題,下面我們來看這樣的乙個問題。問題 求不帶權連通圖g中從頂點u到頂點v的一條最短路徑。即求頂點u到頂點v之間邊數最少的頂點序列 圖1 求最短路徑 例如,對於這樣的乙個有向圖,我們要求頂點0到頂點7的最短路徑。對於求最短路徑,我們是選擇dfs還...