宣告一個 Map<int, vector<pair<int, int>>> 來存資料,pair 中的 second 是用來存 W 用的。宣告一個 ans 變數預設為 999999,還有一個陣列 point[1000] 裡面從 0 到 N-1 預設也是 999999,但是要將第 A 個位置的 point 設為 0。
跑 BFS,每一次就是判斷起點中的點的下一些點有誰,如果 point[目前判斷的位置] > ans,則不用判斷這個點直接 continue。並且要在函式外面宣告一個 all_walk 的 Map 來紀錄哪些點有走過了,每一次進到迴圈都要將 all_walk[目前位置]++。
在 BFS 中跑到的點都會有其下一個可以走到的點,宣告一個 newValue 變數 = max(point[目前 BFS 位置], 下一個點的 W)。如果 all_walk 中紀錄這個點沒有被走過,或是 newValue < point[下一個點],就將 all_walk[下一個點]++、將 point[下一個點] 更新成 newValue、並且將下一個點 Push_Back 到下一次的 BFS 起點中。
如果過程中跑到了 B 這個終點,則將 ans = min(ans, point[目前位置]),並且要宣告一個全域布林值來確認是否真的有走到終點過。