Day 25 獻給阿爾吉儂的花束(BFS)

2021-10-18 20:31:05 字數 1439 閱讀 8576

acwing 1101.獻給阿爾吉儂的花束

bfs應用——走迷宮

考點:bfs

阿爾吉儂是乙隻聰明又慵懶的小白鼠,它最擅長的就是走各種各樣的迷宮。

今天它要挑戰乙個非常大的迷宮,研究員們為了鼓勵阿爾吉儂盡快到達終點,就在終點放了一塊阿爾吉儂最喜歡的乳酪。

現在研究員們想知道,如果阿爾吉儂足夠聰明,它最少需要多少時間就能吃到乳酪。

迷宮用乙個 r×cr×c 的字元矩陣來表示。

字元 s 表示阿爾吉儂所在的位置,字元 e 表示乳酪所在的位置,字元 # 表示牆壁,字元 . 表示可以通行。

阿爾吉儂在 1 個單位時間內可以從當前的位置走到它上下左右四個方向上的任意乙個位置,但不能走出地圖邊界。

輸入格式

第一行是乙個正整數 tt,表示一共有 tt 組資料。

每一組資料的第一行包含了兩個用空格分開的正整數 rr 和 cc,表示地圖是乙個 r×cr×c 的矩陣。

接下來的 rr 行描述了地圖的具體內容,每一行包含了 cc 個字元。字元含義如題目描述中所述。保證有且僅有乙個 s 和 e。

輸出格式

對於每一組資料,輸出阿爾吉儂吃到乳酪的最少單位時間。

若阿爾吉儂無法吃到乳酪,則輸出「oop!」(只輸出引號裡面的內容,不輸出引號)。

每組資料的輸出結果佔一行。

資料範圍

1輸入樣例:

3

3 4.s..

###.

..e.

3 4.s..

.e..

....

3 4.s..

####

..e.

輸出樣例:

5

1oop!

#include #include #include using namespace std;

const int n = 210;

int r,c;

char str[n][n];

int dist[n][n];

typedef pairpii;

int bfs(pii start,pii end)

,dy = ;

while(q.size()));}

}return -1;

}int main()

; if(str[i][j] == 'e') end = ;

}int distance = bfs(start,end);

if(bfs(start,end) == -1) cout << "oop!" << endl;

else

cout << distance << endl;

}return 0;

}

獻給阿爾吉儂的花束

阿爾吉儂是乙隻聰明又慵懶的小白鼠,它最擅長的就是走各種各樣的迷宮。今天它要挑戰乙個非常大的迷宮,研究員們為了鼓勵阿爾吉儂盡快到達終點,就在終點放了一塊阿爾吉儂最喜歡的乳酪。現在研究員們想知道,如果阿爾吉儂足夠聰明,它最少需要多少時間就能吃到乳酪。迷宮用乙個 r c 的字元矩陣來表示。字元 s 表示阿...

zufeoj 獻給阿爾吉儂的花束

阿爾吉儂是乙隻聰明又慵懶的小白鼠,它最擅長的就是走各種各樣的迷宮。今天它要挑戰乙個非常大的迷宮,研究員們為了鼓勵阿爾吉儂盡快到達終點,就在終點放了一塊阿爾吉儂最喜歡的乳酪。現在研究員們想知道,如果阿爾吉儂足夠聰明,它最少需要多少時間就能吃到乳酪。迷宮用乙個r c的字元矩陣來表示。字元s表示阿爾吉儂所...

7218 獻給阿爾吉儂的花束

總時間限制 100ms 記憶體限制 65536kb 描述 阿爾吉儂是乙隻聰明又慵懶的小白鼠,它最擅長的就是走各種各樣的迷宮。今天它要挑戰乙個非常大的迷宮,研究員們為了鼓勵阿爾吉儂盡快到達終點,就在終點放了一塊阿爾吉儂最喜歡的乳酪。現在研究員們想知道,如果阿爾吉儂足夠聰明,它最少需要多少時間就能吃到乳...