fleury演算法求尤拉路徑 尤拉迴路 模板

2021-07-16 13:04:17 字數 771 閱讀 2930

首先簡單講一下思想 首先先判斷這個無向圖存在尤拉路徑(其實尤拉迴路也很容易判)

把每個點連線的邊數存下來 如果只有兩個或者沒有點有奇數條邊與它相連 那麼就存在尤拉路徑

然後從乙個奇數點開始(如果沒有奇數點就任意乙個點)隨便選乙個點開始進行深搜 把經過的每乙個點存到棧裡面 把經過的邊刪掉 

然後在棧裡面的點如果還有邊與它相連 又繼續深搜 否則就把這個點彈出去 輸出

這樣時間複雜度為 o(m)

用矩陣存的 比較low不要罵我。。。(反正尤拉迴路也是水題……)

**如下

#include#include#include#include#include#includeusing namespace std;

stackst;

int mp[110][110],n,m;//n為點數 m為邊數

int num[110],sum,start;

void dfs(int x)

} return;

}void fleury(int x)

if(flag)

else

}return;

}int main()

start=x;

for(int i=0;i<=n;i++)

if(num[i]&1)

if(sum==0||sum==2)fleury(start);

else printf("no solution\n");

} return 0;

}

尤拉路徑 尤拉迴路

尤拉迴路 連通圖,一條路徑恰好經過所有邊一次,並且構成迴路 起點終點相同 尤拉路徑 連通圖,一條路徑恰好經過所有邊一次 起點終點不必相同 具有尤拉迴路的圖稱尤拉圖,具有尤拉路徑但不具有尤拉迴路的圖稱半尤拉圖 無向圖尤拉迴路的判斷 連通圖,所有頂點度數均為偶數 無向圖尤拉路徑的判斷 連通圖,只有兩頂點...

尤拉迴路 尤拉路徑

尤拉路徑 如果圖 g 種的一條路徑包括所有的邊,且僅通過一次的路徑.尤拉迴路 能回到起點的尤拉路徑.混合圖 既有無向邊又有無向邊的圖.hierholzer演算法自動尋找尤拉迴路,在找不到尤拉迴路的情況下會找到尤拉路徑。前提是得給它指定好起點。演算法流程 無向圖 1.判斷奇點數。奇點數若為0則任意指定...

求尤拉函式

3.尤拉函式 對正整數n,尤拉函式是少於或等於n的數中與n互質的數的數目 顯然對素數n,phi n n 1 通式 x x 1 1 p1 1 1 p2 1 1 p3 1 1 p4 1 1 pn 其中p1,p2 pn為x的所有質因數,x是不為0的整數。1 1 唯一和1互質的數就是1本身 很簡單,就不寫 ...