算卦先生來問你,對於每個他給出的無向圖,是否存在一條路徑能夠經過所有邊恰好一次,並且經過所有點?不需要滿足最後回到起點。
第一行乙個數 t,表示有 t組資料。對與每組資料,第一行有兩個數 n,m,接下去 m行每行兩個數 u,v描述一條無向邊 (u,v)。圖不保證聯通。
對於每組資料,如果存在,輸出 "zhen" ,否則輸出 "xun"。示例1
複製
22 21 1
2 14 6
1 31 4
1 23 2
4 24 3
複製
zhenxun
2≤n≤30判斷尤拉迴路:1≤m≤n*(n−1)/2
1.是要連通,是所有邊只能經過一次,並且要經過所有的點。所以,可以用並查集來檢查無向圖的連通性,
如果有不連通的,則輸出「xun」,若無向圖連通,則進一步考慮,這個可以用並查集判斷
2.可以想象一下,若存在一條路徑能夠經過所有邊恰好一次,並且經過所有的點,
那麼除了開頭的點和結尾的點都只會出現兩次,進一步向下,若開頭和結尾相連(形成乙個環),
則開頭和結尾也會出現兩次,反之,若不相連,則開頭和結尾出現一次,此時只要看每個點的出現次數是否為奇數,
並算出奇數的個數cnt,若cnt=0或cnt=2,則為「zhen」,反之,為「xun」。
判斷尤拉通路是離散數學的知識,對於無向圖來說,度數為奇數的的點可以有2個或者0個,並且這兩個奇點其中乙個為起點另外乙個為終點
#include#includeusing
namespace
std;
const
int maxn=1e6+100
;int
degree[maxn],pre[maxn];
intn,m;
int find(int
x)
else
}void marge(int x,int
y)}
intmain()
intx,y;
for(int i=1;i<=n;i++)
int cnt=0
;
for(int i=1;i<=n;i++)
}if(cnt>1)
else
}if(cnt==0||cnt==2)
else}}
}
HDU 1878 尤拉迴路(判斷尤拉迴路)
題目大意 尤拉迴路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條迴路。現給定乙個圖,問是否存在尤拉迴路?解題思路 判斷無向圖是否存在尤拉迴路,判斷每個點的度數是否為偶數 並查集確認連通性。1 include2 include3 include4 define clr arr,val...
尤拉迴路的判斷
華電北風吹 天津大學認知計算與應用重點實驗室 2016 06 29 尤拉迴路 圖g,若存在一條路,經過g中每條邊有且僅有一次,稱這條路為尤拉路,如果存在一條迴路經過g每條邊有且僅有一次,稱這條迴路為尤拉迴路。具有尤拉迴路的圖成為尤拉圖。判斷尤拉路是否存在的方法 有向圖 圖連通,有乙個頂點出度大入度1...
尤拉迴路 尤拉通路判斷
尤拉迴路 圖g,若存在一條路,經過g中每條邊有且僅有一次,稱這條路為尤拉路,如果存在一條迴路經過g每條邊有且僅有一次,稱這條迴路為尤拉迴路。具有尤拉迴路的圖成為尤拉圖。判斷尤拉通路是否存在的方法 有向圖 圖連通,有乙個頂點出度大入度1,有乙個頂點入度大出度1,其餘都是出度 入度。無向圖 圖連通,只有...