日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构实验之图论八:欧拉回路

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构实验之图论八:欧拉回路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description
在哥尼斯堡的一個公園里,有七座橋將普雷格爾河中兩個島及島與河岸連接起來。

能否走過這樣的七座橋,并且每橋只走一次?瑞士數學家歐拉最終解決了這個問題并由此創立了拓撲學。歐拉通過對七橋問題的研究,不僅圓滿地回答了哥尼斯堡七橋問題,并證明了更為廣泛的有關一筆畫的三條結論,人們通常稱之為歐拉定理。對于一個連通圖,通常把從某結點出發一筆畫成所經過的路線叫做歐拉路。人們又通常把一筆畫成回到出發點的歐拉路叫做歐拉回路。具有歐拉回路的圖叫做歐拉圖。
你的任務是:對于給定的一組無向圖數據,判斷其是否成其為歐拉圖?
Input
連續T組數據輸入,每組數據第一行給出兩個正整數,分別表示結點數目N(1 < N <= 1000)和邊數M;隨后M行對應M條邊,每行給出兩個正整數,分別表示該邊連通的兩個結點的編號,結點從1~N編號。
Output
若為歐拉圖輸出1,否則輸出0。
Sample
Input

1
6 10
1 2
2 3
3 1
4 5
5 6
6 4
1 4
1 6
3 4
3 6

Output

1

Hint
如果無向圖連通并且所有結點的度都是偶數,則存在歐拉回路,否則不存在。

#include<bits/stdc++.h>using namespace std;const int N = 1100; int Next[N];void init(int n) {for(int i = 0; i <= n; i++)Next[i] = i; } int find_root(int n) {if(Next[n] == n)return n;elsereturn Next[n] = find_root(Next[n]); }void merage(int a, int b) {int t1 = find_root(a), t2 = find_root(b);if(t1 != t2)Next[t1] = Next[t2]; }int main() {int t, u, v, n, m, degree[N];cin >> t;while(t--){cin >> n >>m;memset(degree, 0, sizeof(degree));init(n);for(int i = 0; i < m; i++){cin >> u >> v;merage(u, v);degree[v]++;degree[u]++;}int cnt = 0;bool flag = true;for(int i = 1; i <= n; i++){if(degree[i] % 2 == 1)flag = false;}for(int i = 1; i <= n; i++){if(Next[i] == i)cnt++;}if(flag && cnt == 1)cout << 1 << endl;elsecout << 0 << endl;}return 0; }

總結

以上是生活随笔為你收集整理的数据结构实验之图论八:欧拉回路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。