problem description
尤拉迴路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條迴路。現給定乙個圖,問是否存在尤拉迴路?
input
測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數,分別是節點數n ( 1 < n < 1000 )和邊數m;隨後的m行對應m條邊,每行給出一對正整數,分別是該條邊直接連通的兩個節點的編號(節點從1到n編號)。當n為0時輸入結
束。output
每個測試用例的輸出佔一行,若尤拉迴路存在則輸出1,否則輸出0。
sample input
3 3
1 2
1 3
2 3
3 2
1 2
2 3
0sample output 1 0
【概念】
尤拉迴路:若圖g中存在這樣一條路徑,使得它恰通過g中每條邊一次,則稱該路徑為尤拉路徑。若該路徑是乙個圈,則稱為尤拉(euler)迴路。
該題目是無向圖:
無向圖存在尤拉迴路的充要條件
乙個無向圖存在尤拉迴路,當且僅當該圖所有頂點度數都為偶數,且該圖是連通圖。
度 的概念用這個圖來說吧:
a,b,c,d,e的度為3,f的度為5;也就是從該點引出的邊有幾條,就為幾度
奇數條邊為奇度,偶數條邊為偶度;上圖的頂點度數全為奇度,所以不存在尤拉迴路,也就是不能「一筆畫」。
並查集+路徑壓縮
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 1010;
int par[maxn];
int rk[maxn];
int cnt[maxn];
int n,m;
void init()
}int find(int x)
else
}void unite(int x,int y)
}int main()
int k=0;
for(int i=1;i<=n;i++)
}if(k==n)
else
printf("0\n");
}return
0;}
HDU1878 尤拉迴路
problem description 尤拉迴路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條迴路。現給定乙個圖,問是否存在尤拉迴路?input 測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數,分別是節點數n 1 n 1000 和邊數m 隨後的m行對應m條邊,每行給出...
HDU 1878 尤拉迴路
演算法思想 判斷乙個圖中是否存在尤拉迴路 每條邊恰好只走一次,並能回到出發點的路徑 在以下三種情況中有三種不同的演算法 一 無向圖 每個頂點的度數都是偶數,則存在尤拉迴路。二 有向圖 所有邊都是單向的 每個節頂點的入度都等於出度,則存在尤拉迴路。以上兩種情況都很好理解。其原理就是每個頂點都要能進去多...
HDU 1878 尤拉迴路
題意 尤拉迴路的判斷條件,一 無向圖 每個頂點的度數都是偶數,則存在尤拉迴路。二 有向圖 所有邊都是單向的 每個節頂點的入度都等於出度,則存在尤拉迴路。以上兩種情況都很好理解。其原理就是每個頂點都要能進去多少次就能出來多少次。三 混合圖 有的邊是單向的,有的邊是無向的。常被用於比喻城市裡的交通網路,...