歐拉回路與歐拉路徑

歐拉回路與歐拉路徑

若是圖G中的一個路徑包括每一個邊剛好一次,則該路徑稱爲歐拉路徑(歐拉通路)。html

若是一個迴路是歐拉路徑,則稱爲歐拉回路(Euler circuit)。ui

說的直白點,歐拉回路就是從一個點出發,通過每一條邊剛好一次,最後能回到這個點的路徑spa

例以下圖中的紅色路徑組成了一個歐拉回路
htm

存在條件

歐拉回路的充要條件

  • 無向圖:全部點的度數都爲偶數blog

  • 有向圖:全部點的入度都等於出度ci

歐拉路徑的充要條件

  • 無向圖:除兩點(起點與終點)外其他全部點的度數都爲偶數get

  • 有向圖:除兩點(起點入度\(+1\)=出度,終點入度\(-1\)等於出度)外,其他全部點的入度等於出度it

判斷方法

利用並查集判斷

若給出的圖知足歐拉回路/歐拉路徑的重要條件且並查集成功合併的 次數\(>=\)點數\(-1\),則證實含有歐拉回路/歐拉路徑class

歐拉路徑:洛谷P1333方法

歐拉回路:HDU 1878

dfs

若是要求輸出方案,那麼只能用dfs

UOJ 117

拓展

這裏再補充一種兩筆畫問題

解決方法比較簡單

有解當且僅當度數爲奇數的點不超過4個。

將其中兩個點加一條邊後求歐拉路徑,在這條邊處斷開變成兩條路徑便可。

時間複雜度\(O(m)\)

相關文章
相關標籤/搜索