歐拉回路學習筆記

歐拉(通)迴路

歐拉道路:

概念:

從無向圖中的一個結點出發走出一條道路,每條邊恰好經過一次。這樣的路線稱爲歐拉道路,也可形象的稱爲“一筆畫”。

性質:

除了起點和終點以外,其他點的“進出”次數應該相等。換句話說,除了起點和終點以外,其他點的度數應該是偶數;

這也就引出了歐拉道路的充分條件:如果一個無向圖是連通的,且最多隻有兩個奇點,則一定是歐拉道路。且必須從一個奇點出發,另一個奇點終止;如果沒有奇點,那麼可以從任意點出發,最終會回到起點,這也就是歐拉回路

這個性質也可以用到有向圖中:

最多隻有兩個點的入度不等於出度,而且必須是其中一個點的出度恰好比入度大1,另一個的入度比出度大1,前提是這個圖連通;

僞代碼實現:

void dfs(int u){
	for(int v=1;v<=n;v++){
		if(ma[u][v]&&!vis[u][v]){
			vis[u][v]=vis[v][u]=1;
			dfs(v);
			cout<<u<<" "<<v<<endl;//這裏是倒序打印路徑,如果要正序,入棧就行 
		}
	} 
}
發佈了207 篇原創文章 · 獲贊 45 · 訪問量 8325
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章