Codevs 2059 逃出轉殖島

2021-07-28 20:37:44 字數 1509 閱讀 1634

時間限制: 1 s    

空間限制: 128000 kb    

題目等級 : ** gold

oi小組的yh酷愛玩魔獸rpg,每天都會在u9搜尋最新的rpg地圖。

今天,他找到一張名為《逃出轉殖島》的地圖,在這張地圖中,有乙個n行m列的矩陣,矩陣由』y』,』c』,』#』,』*』,』p』,5種元素組成。』y』表示yh的出生位置,c表示轉殖島的出口,』#』表示該處不可通過,』*』表示通過該處需要消耗金幣cost,』p』表示傳送陣,任意兩個傳送陣之間可以免費互相傳送。由於這僅僅是第一關,yh不想浪費太多的體力,聰明的你能幫他算出從』y』出發到』c』最少需要消耗多少金幣嗎?當然,如果yh永遠無法到達』c』,請輸出」 screw you!」以表到yh的不滿。

輸入描述 input description

第一行兩個整數,n,m,表示矩陣有n行m列

接下來為n行m列的矩陣,由』y』,』c』,』#』,』*』,』p』,組成,含義如題目描述。

輸出描述 output description

輸出1行,表示yh需要花費的最小體力(如果無法到達輸出」screw you!」)。

樣例輸入 sample input

【樣例輸入1】

1 3 3

y*c【樣例輸入2】

1 3 2

y#c【樣例輸入3】

1 5 2

yp#pc

樣例輸出 sample output

【樣例輸出1】

3【樣例輸出2】

screw you!

【樣例輸出3】

0資料範圍及提示 data size & hint

【資料範圍】

對於100%的資料,n*m≤5000,傳送陣』p』的數量≤500

#include#include#includeusing namespace std;

int n,m,cost,sx,sy,ex,ey,tot=0;

int u[5]=;

int v[5]=;

int x[10010],y[10010],dis[10010];//dis陣列記錄花費

char map[1010][1010];

bool used[1010][1010],chuan[1010][1010];//記錄傳送門座標

bool flag;

void bfs(int x1,int y1)

}ww++;x[ww]=xx;y[ww]=yy;used[xx][yy]=1;

if(map[xx][yy]=='*') dis[ww]=dis[tt]+cost;

//如果走的是*讓dis陣列加上花費

else dis[ww]=dis[tt];//否則不加 }}

}}int main()

bfs(sx,sy);

if(!flag) printf("screw you!\n");

return 0;

}

思路:走到傳送門的時候將別的傳送門邊上的點一併入隊,廣搜..

Codevs 2059 逃出轉殖島

時間限制 1 s 空間限制 128000 kb 題目等級 gold oi小組的yh酷愛玩魔獸rpg,每天都會在u9搜尋最新的rpg地圖。今天,他找到一張名為 逃出轉殖島 的地圖,在這張地圖中,有乙個n行m列的矩陣,矩陣由 y c p 5種元素組成。y 表示yh的出生位置,c表示轉殖島的出口,表示該處...

codevs 2059 逃出轉殖島(BFS)

題目描述 description oi小組的yh酷愛玩魔獸rpg,每天都會在u9搜尋最新的rpg地圖。今天,他找到一張名為 逃出轉殖島 的地圖,在這張地圖中,有乙個n行m列的矩陣,矩陣由 y c p 5種元素組成。y 表示yh的出生位置,c表示轉殖島的出口,表示該處不可通過,表示通過該處需要消耗金幣...

codevs2059逃出轉殖島(傳送門bfs)

和普通的迷宮問題類似只是多了乙個叫傳送門的東西 對於傳送門的處理 每當跑到傳送門就把其餘所有傳送門周圍的點都入隊 傳送門之間不花費時間並且從不是傳送門的點走到傳送門 也不花費時間花費時間的 好像說了句廢話.所以判斷一下 include include include include include ...