尤拉道路,乙個詞概括就是一筆畫。一張連通圖能用一筆畫不重複的走完每一條邊的就是尤拉道路,起點和終點是同一點的是尤拉迴路。
那麼判斷一張圖是不是尤拉迴路就可以通過記錄每一點的度數,所有點度數均是偶數的是尤拉迴路,有一到兩個點度數是奇數的是尤拉道路,有兩個點以上是奇數度數的不是尤拉道路。有向圖條件更苛刻一點,需要點入度和出度相等才能構成尤拉迴路,即使是尤拉道路也需要入度和出度相差僅為一,且這樣的店不能超過兩個。
七橋問題,給出一張圖,判斷是否是尤拉迴路:
#include #include#include#includeusing namespace std;
int index[1005],du[1005];
int find(int x)//並查集
void meet(int x,int y)
//已經連線的兩個集合併入乙個根節點,壓縮路徑
int main()
int flag=0;//記錄並查集有個數(根節點)
for(int i=1;i<=n;i++) if(flag>1)//非連通圖不能形成尤拉迴路
printf("0\n");
else
if(flag)
printf("0\n");
else
printf("1\n");}}
return 0;
}
**是照著模板敲的,用到了並查集,回顧了一下。
並查集用來判斷兩個節點是否同屬於乙個根節點,在這裡用來判斷圖是否是連通圖。
並查集把已經確定相互連線的兩個集合併入乙個集合,
此題只需判斷是否尤拉迴路,所以不必深究具體的道路,如果是求尤拉道路,判斷點的度數使只需加上奇數不超過兩個。
學習筆記 尤拉迴路
有兩個概念 尤拉路徑 在乙個圖中,由i點出發,將每個邊遍歷一次最終到達j點的一條路徑。尤拉迴路 i j時的尤拉路徑。我們需要確定乙個圖是否存在尤拉路徑,並找到這條路徑 那就很好做了qwq 可以用並查集判斷圖的聯通性 然後對於有向圖與無向圖,使用上述性質進行判斷 對於無向圖的尤拉迴路,任意一點都可以作...
尤拉迴路學習筆記
尤拉道路 概念 從無向圖中的乙個結點出發走出一條道路,每條邊恰好經過一次。這樣的路線稱為尤拉道路,也可形象的稱為 一筆畫 性質 除了起點和終點以外,其他點的 進出 次數應該相等。換句話說,除了起點和終點以外,其他點的度數應該是偶數 這也就引出了尤拉道路的充分條件 如果乙個無向圖是連通的,且最多只有兩...
尤拉迴路學習筆記
這裡先說一下尤拉圖和尤拉迴路的概念 如果圖g中的乙個路徑包括每個邊恰好一次,則該路徑稱為尤拉路徑 euler path 如果乙個迴路是尤拉路徑,則稱為尤拉迴路 euler circuit 具有尤拉迴路的圖稱為尤拉圖 簡稱e圖 具有尤拉路徑但不具有尤拉迴路的圖稱為半尤拉圖。這就清楚好多了,然後下面是尤...