用c 實現尤拉迴路的尋找(杭電ACM)

2021-06-06 04:19:53 字數 939 閱讀 7939

problem description

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

input

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

output

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

sample input

3 3

1 21 3

2 33 2

1 22 30

sample output

10  

實現**為:

#include using namespace std;

const int size = 1001;

bool map[size][size];

bool visited[size];

int degree[size];

void dfs(int n, int i);

int main()

{ int node, edge, start, over, i;

bool adj, euler;

while(cin >> node && node)

{scanf("%d", &edge);

adj = euler = true;

memset(degree, 0, sizeof(degree));

memset(map, 0, sizeof(map));

memset(visited, 0, sizeof(visited));

for(i=0;i

DFS應用 尋找尤拉迴路

0.1 本文總結於 資料結構與演算法分析,源 均為原創,旨在 理解 dfs應用 尋找尤拉迴路 的idea 並用源 加以實現 源 我還沒有找到一種有效的資料結構和dfs進行結合,往後會po出 1.1 尤拉迴路定義 我們必須在圖中找出一條路徑,使得該路徑對圖的每條邊恰好訪問一次。如果我們要解決 附加的問...

尤拉迴路 輸出尤拉迴路的路徑

有向or無向均可,重邊 step1 從u開始,找到與他相連的v,放入棧,刪除 u,v 這條邊,然後從v開始 step2 當有一點沒有與他相連的點時,放入path,然後從stack取棧頂繼續開始找點刪邊。最後記得把棧裡的點放到path中。path倒序輸出 需要先找到起點 鄰接表法,適合稀疏圖 incl...

尤拉迴路的判斷

華電北風吹 天津大學認知計算與應用重點實驗室 2016 06 29 尤拉迴路 圖g,若存在一條路,經過g中每條邊有且僅有一次,稱這條路為尤拉路,如果存在一條迴路經過g每條邊有且僅有一次,稱這條迴路為尤拉迴路。具有尤拉迴路的圖成為尤拉圖。判斷尤拉路是否存在的方法 有向圖 圖連通,有乙個頂點出度大入度1...