problem description
hogwarts正式開學以後,harry發現在hogwarts裡,某些樓梯並不是靜止不動的,相反,他們每隔一分鐘就變動一次方向.
比如下面的例子裡,一開始樓梯在豎直方向,一分鐘以後它移動到了水平方向,再過一分鐘它又回到了豎直方向.harry發現對他來說很難找到能使得他最快到達目的地的路線,這時ron(harry最好的朋友)告訴harry正好有乙個魔法道具可以幫助他尋找這樣的路線,而那個魔法道具上的咒語,正是由你纂寫的.
input
測試資料有多組,每組的表述如下:
第一行有兩個數,m和n,接下來是乙個m行n列的地圖,'*'表示障礙物,'.'表示走廊,'|'或者'-'表示乙個樓梯,並且標明了它在一開始時所處的位置:'|'表示的樓梯在最開始是豎直方向,'-'表示的樓梯在一開始是水平方向.地圖中還有乙個's'是起點,'t'是目標,0<=m,n<=20,地圖中不會出現兩個相連的梯子.harry每秒只能停留在'.'或's'和't'所標記的格仔內.
output
只有一行,包含乙個數t,表示到達目標的最短時間.
注意:harry只能每次走到相鄰的格仔而不能斜走,每移動一次恰好為一分鐘,並且harry登上樓梯並經過樓梯到達對面的整個過程只需要一分鐘,harry從來不在樓梯上停留.並且每次樓梯都恰好在harry移動完畢以後才改變方向.
sample input
5 5sample output**..t
**.*.
..|..
.*.*.
s....
7hint
hint
地圖如下:
#include#include#include#include#define qq 22
using namespace std;
char map[qq][qq];
int vis[qq][qq];
struct node
};int fx1[5]= ;
int fx2[5]= ;
int m,n;
int sx,sy,ex,ey;
void bfs()
else if(now.step%2==1&&(i==0||i==1))
else //不能經過樓梯時
}if(map[next.x][next.y]=='-')
else if(now.step%2==1&&(i==3||i==2))
else
}vis[next.x][next.y]=1;
next.step=now.step+1;
q.push(next);}}
return;
}int main()
}bfs();
}return 0;
}
HDU 1180 詭異的樓梯 廣搜
problem description hogwarts正式開學以後,harry發現在hogwarts裡,某些樓梯並不是靜止不動的,相反,他們每隔一分鐘就變動一次方向.比如下面的例子裡,一開始樓梯在豎直方向,一分鐘以後它移動到了水平方向,再過一分鐘它又回到了豎直方向.harry發現對他來說很難找到能...
hdu1180詭異的樓梯 優先佇列 廣搜
好久沒寫部落格,主要還是因為週末的考試和昨天生態學實驗,憂傷的週末終於過去,更加的憂傷的日子已經來臨orz 寫在前面的廢話 這個題本來第一眼看是中文的,十分興奮,結果 到底還是ac率20 的題啊,理解錯乙個地方,有樓梯的地方不是只能順著走,只是順著走可以省時間1分鐘,能不能最後也省時間不一定 挺簡潔...
HDU 1180 詭異的樓梯
題意 題意應該很好理解,就是從s到t的最少步數,只是加了乙個樓梯。思路 一看就是廣搜,找最少的步數,harry只能每次走到相鄰的格仔而不能斜走,每移動一次恰好為一分鐘,並且harry登上樓梯並經過樓梯到達對面的整個過程只需要一分鐘,harry從來不在樓梯上停留.並且每次樓梯都恰好在harry移動完畢...