時間限制: 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 ...