尤拉迴路(並查集和dfs)

2021-08-17 19:56:55 字數 986 閱讀 6407

尤拉迴路

從乙個無向圖(有向圖)中的乙個節點出發走出一條道路,使每條邊都經過一次。

那麼,首先圖要連通,即不能存在——有的節點沒有與任何其他點連線。

其次,要滿足每條邊只走一次並且全部走完:所以除了起點和終點,其他節點的度應該為偶數;有向圖中應該是除了起點和終點,其他節點的入度等於出度,而起點的出度比入度大1,終點的入度比出度大1。

對於尤拉迴路,可以用dfs和並查集兩種方法,一般如果題目中還需要列印出路徑,就用dfs,如果計算數目,用並查集。(個人覺得並查集比較好用……)

下面是分別用dfs和並查集的兩個模板題:

①uva-10054——dfs

題目大意:串項鍊,項鍊的每個珠子都有一前一後兩個顏色,而後面珠子的第乙個顏色必須與前乙個柱子的第二個顏色一樣,注意最後乙個珠子的第二個顏色也要與第乙個珠子的第乙個顏色相同。串珠子時珠子的前後顏色可以交換。

思路:顯然是尤拉迴路中的無向圖。

**:    

#include#include#includeusing namespace std;

int edge[55][55],d[55];

void dfs(int mid) //尋找連通塊

}return;

}int main(void)

void unions(int a,int b) //聯結

void init()

int main(void)

{ int n,m,a,b;

while(~scanf("%d%d",&n,&m))

{init();

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

fa[i]=i;

for(int i=0;i--------------------還有乙個超棒的部落格,上面有一些尤拉迴路的經典題,博主的講解也很詳細,

尤拉迴路 並查集

時間限制 1 sec 記憶體限制 32 mb 提交 6 解決 5 提交 狀態 討論版 尤拉迴路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條迴路。現給定乙個圖,問是否存在尤拉迴路?測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數,分別是節點數n 1 n 1000 和邊數...

K 尤拉迴路 並查集

點選開啟鏈結 k 尤拉迴路 尤拉迴路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條迴路。現給定乙個圖,問是否存在尤拉迴路?input 測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數,分別是節點數n 1 n 1000 和邊數m 隨後的m行對應m條邊,每行給出一對正整數,...

hdoj1878尤拉迴路(並查集 尤拉迴路)

description rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partne...