??
題意:nXm的地圖, 問通過四個方向從(1,1)走到(1000,1000)所經過的最小二進制序列是多少,忽略前綴0.
思路:首先如果起點為0,那麼我們bfs搜索和起點0聯通的為0的連通塊,這樣我們第一步肯定是從與這個連通塊相鄰的且與重點最近的地方出發。
將所有可能起點加入隊列,在bfs一遍找到字典序最小的那條路就是答案,
在這裡可以用兩個vector類型容器,一個是q2存儲所有節點值存為0的結點,
另一個q3存儲節點值為1的結點。
那麼如果q2不為空那麼也就是有可以走零,那麼就從這裡面選,否則從q3中選。
ps:下午比賽時各種doubi,先是dfs無懸念超時....然後改成把求字典序的那個dfs改成了bfs結果re訪問非法.......改了後結果爆棧.........最後改了一發覺得肯定對了然而mle了......
直到比賽結束也沒發現為啥mle了,寫了三個半小時要哭了..........回來後發現是因為最開始搜索連通塊時我是每次訪問結點時才置vis為1而不是每次添加結點時就置vis為1,這樣每次會添加很多重復結點肯定會mle...........哭暈在廁所,本來可以ac的還是基礎不扎實........任重道遠
#include
#include
#include
#include
#include
#include
#include
#include