HDU 1878 尤拉迴路(DFS)

2021-07-16 16:36:06 字數 1913 閱讀 9078

#include
#includeusing namespace std;

int maps[1005][1005];

int in[1005];

int book[1005];

int n,m;

int dfs(int a)

}}int main()

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

{if(n==0) return 0;

scanf("%d",&m);

memset(maps,0,sizeof(maps));

memset(in,0,sizeof(in));

memset(book,0,sizeof(book));

for(int i=0;i演算法思想:

判斷乙個圖中是否存在尤拉迴路(每條邊恰好只走一次,並能回到出發點的路徑),在以下三種情況中有三種不同的演算法:

一、無向圖

每個頂點的度數都是偶數,則存在尤拉迴路。

二、有向圖(所有邊都是單向的)

每個節頂點的入度都等於出度,則存在尤拉迴路。

以上兩種情況都很好理解。其原理就是每個頂點都要能進去多少次就能出來多少次。

三、混合圖(有的邊是單向的,有的邊是無向的。常被用於比喻城市裡的交通網路,有的路是單行道,有的路是雙行道。)

找到乙個給每條無向的邊定向的策略,使得每個頂點的入度等於出度,這樣就能轉換成上面第二種情況。這就可以轉化成乙個二部圖最大匹配問題。網路模型如下:

1. 新建乙個圖。

2. 對於原圖中每一條無向邊i,在新圖中建乙個頂點e(i);

3. 對於原圖中每乙個頂點j,在新圖中建乙個頂點v(j)。

4. 如果在原圖中,頂點j和k之間有一條無向邊i,那麼在新圖中從e(i)出發,新增兩條邊,分別連向v(j)和v(k),容量都是1。

5. 在新圖中,從源點向所有e(i)都連一條容量為1的邊。

6. 對於原圖中每乙個頂點j,它原本都有乙個入度in、出度out和無向度un。顯然我們的目的是要把所有無向度都變成入度或出度,從而使它的入度等於總度數的一半,也就是(in + out + un) / 2(顯然與此同時出度也是總度數的一半,如果總度數是偶數的話)。當然,如果in已經大於總度數的一半,或者總度數是奇數,那麼尤拉迴路肯定不存大。如果in小於總度數的一半,並且總度數是偶數,那麼我們在新圖中從v(j)到匯點連一條邊,容量就是(in + out + un) / 2 – in,也就是原圖中頂點j還需要多少入度。

按照這個網路模型算出乙個最大流,如果每條從v(j)到匯點的邊都達到滿流量的話,那麼尤拉迴路成立。

尤拉迴路一定要聯通的

尤拉迴路(這個題居然就叫尤拉迴路)

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

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

input

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

束。

output

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

sample input

3 31 21 3

2 33 2

1 22 3

0

sample output

1

0

HDU1878 尤拉迴路

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

HDU 1878 尤拉迴路

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

HDU 1878 尤拉迴路

題意 尤拉迴路的判斷條件,一 無向圖 每個頂點的度數都是偶數,則存在尤拉迴路。二 有向圖 所有邊都是單向的 每個節頂點的入度都等於出度,則存在尤拉迴路。以上兩種情況都很好理解。其原理就是每個頂點都要能進去多少次就能出來多少次。三 混合圖 有的邊是單向的,有的邊是無向的。常被用於比喻城市裡的交通網路,...