寒假集訓D4

2021-10-13 20:29:32 字數 982 閱讀 9167

dfs & bfs

1. dfs概念

dfs:演算法會盡可能深的搜尋樹的分支。當節點v的所在邊都己被探尋過,搜尋將回溯到發現節點

v的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在

未被發現的節點,則選擇其中乙個作為源節點並重複以上過程,整個程序反覆進行直到所有節點

都被訪問為止。這種演算法不會根據圖的結構等資訊調整執行策略。

----from wikipedia

bfs類似。

2.dfs流程

1. 首先將根節點放入

stack

中。

2. 從

stack

中取出第乙個節點,並檢驗它是否為目標。

3. 重複步驟2。

4. 如果不存在未檢測過的直接子節點。

5. 重複步驟4。

6. 若stack

為空,表示整張圖都檢查過了

——亦即圖中沒有欲搜尋的目標。結束搜尋並回傳「找

不到目標」。

2023年12月31日,下午7點

dfs和bfs

主要作為一種遍歷圖或解空間樹的思想,一般不會單獨出現,更多的是輔助其他圖論

演算法,或配合特殊優化的手段遍歷解空間樹篩選正確解。

在藍橋杯這種類

oi賽制中,會一手

dfs基本就可以省一,而國賽更多的是動態規劃(當然也可以

dfs嗯跑)。

在天梯賽中,

dfs是經常考查的演算法,難度通常在

l2左右(因為

l1不涉及任何演算法)。 在

xcpc

(ccpc

和icpc

)中,dfs

和bfs

幾乎從不單獨出現,一般作為其他圖論演算法的一部分 (

tarjan

求連通分量,網路流求增廣路),或考察部分圖上的性質(樹的重心

/直徑)。

清北學堂noip2018集訓D4

p.s.最小生成樹,最短路問題,spfa演算法,強連通分量。鄰接矩陣 時間 如下 include using namespace std int n,m n n int graph 105 105 intmain for int i 0 i cout return0 鄰接錶鏈表儲存 遍歷圖最短路 單...

D4 迭代器和生成器

一 迭代器 iterator 訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有元素被訪問 完結束。迭代器只能前進不能後退,但實際應用時很少在迭代中後退。迭代器的一大優點是不需要 事先準備好整個迭代過程中的所有元素,僅在迭代到某個元素時 才計算該元素,在這之前或之後,元素可以不存...

寒假 福州集訓 Day4

後補的.這天的早上仍然考試,沒有爆零的我簡直興奮。t1 資料我覺得有點大 做不來 就準備拿個暴力分 直接用了遞迴 我想了很多辦法優化 包括儲存加數的方法數什麼的 但是都沒有成功 所以我最後只拿了20的暴力分 t2 是我沒考慮周全 沒有考慮 兩點在同一位置的時候線路最短的情況 只是單純的分別找了兩個點...