若是圖G中的一個路徑包括每一個邊剛好一次,則該路徑稱爲歐拉路徑(歐拉通路)。html
若是一個迴路是歐拉路徑,則稱爲歐拉回路(Euler circuit)。ui
說的直白點,歐拉回路就是從一個點出發,通過每一條邊剛好一次,最後能回到這個點的路徑spa
例以下圖中的紅色路徑組成了一個歐拉回路
htm
無向圖:全部點的度數都爲偶數blog
有向圖:全部點的入度都等於出度ci
無向圖:除兩點(起點與終點)外其他全部點的度數都爲偶數get
有向圖:除兩點(起點入度\(+1\)=出度,終點入度\(-1\)等於出度)外,其他全部點的入度等於出度it
若給出的圖知足歐拉回路/歐拉路徑的重要條件且並查集成功合併的 次數\(>=\)點數\(-1\),則證實含有歐拉回路/歐拉路徑class
歐拉路徑:洛谷P1333方法
歐拉回路:HDU 1878
若是要求輸出方案,那麼只能用dfs
這裏再補充一種兩筆畫問題
解決方法比較簡單
有解當且僅當度數爲奇數的點不超過4個。
將其中兩個點加一條邊後求歐拉路徑,在這條邊處斷開變成兩條路徑便可。
時間複雜度\(O(m)\)