尤拉迴路(HDU 1878) 尤拉迴路模板題

2021-10-04 12:10:08 字數 1176 閱讀 4602

題目鏈結

尤拉迴路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條迴路。現給定乙個圖,問是否存在尤拉迴路?

測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數,分別是節點數n ( 1 < n < 1000 )和邊數m;隨後的m行對應m條邊,每行給出一對正整數,分別是該條邊直接連通的兩個節點的編號(節點從1到n編號)。當n為0時輸入結

束。每個測試用例的輸出佔一行,若尤拉迴路存在則輸出1,否則輸出0。

3 31 2

1 32 3

3 21 2

2 3010

對於判定尤拉通路/迴路是否存在的問題,顯然我們只需判斷兩點:

圖是否聯通。

頂點度數的統計與判斷。

對於第一點,我們可以用並查集來統計連通分量/強連通分量的個數。如果個數為1,則轉至第二點。否則,不存在尤拉通路/迴路。

對於第二點,我們只需統計結束後做乙個簡單判斷。

#include

#define maxn 1005

using

namespace std;

int n,m,degree[maxn]

,father[maxn]

;int

read()

//快讀

return sum;

}int

find

(int x)

//並查集

void

union

(int x,

int y)

//合併

intmain()

for(

int i=

1;i<=m;i++

)int cnt=0;

//記錄連通分量個數

for(

int i=

1;i<=n;i++)if

(i==father[i]

) cnt++;if

(cnt!=

1)cout<<

0

}return0;

}

HDU 1878 尤拉迴路(判斷尤拉迴路)

題目大意 尤拉迴路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條迴路。現給定乙個圖,問是否存在尤拉迴路?解題思路 判斷無向圖是否存在尤拉迴路,判斷每個點的度數是否為偶數 並查集確認連通性。1 include2 include3 include4 define clr arr,val...

HDU1878 尤拉迴路

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

HDU 1878 尤拉迴路

演算法思想 判斷乙個圖中是否存在尤拉迴路 每條邊恰好只走一次,並能回到出發點的路徑 在以下三種情況中有三種不同的演算法 一 無向圖 每個頂點的度數都是偶數,則存在尤拉迴路。二 有向圖 所有邊都是單向的 每個節頂點的入度都等於出度,則存在尤拉迴路。以上兩種情況都很好理解。其原理就是每個頂點都要能進去多...