SDUT-3364_欧拉回路
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)之圖論八:歐拉回路
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
在哥尼斯堡的一個(gè)公園里,有七座橋?qū)⑵绽赘駹柡又袃蓚€(gè)島及島與河岸連接起來(lái)。
能否走過(guò)這樣的七座橋,并且每橋只走一次?瑞士數(shù)學(xué)家歐拉最終解決了這個(gè)問(wèn)題并由此創(chuàng)立了拓?fù)鋵W(xué)。歐拉通過(guò)對(duì)七橋問(wèn)題的研究,不僅圓滿地回答了哥尼斯堡七橋問(wèn)題,并證明了更為廣泛的有關(guān)一筆畫的三條結(jié)論,人們通常稱之為歐拉定理。對(duì)于一個(gè)連通圖,通常把從某結(jié)點(diǎn)出發(fā)一筆畫成所經(jīng)過(guò)的路線叫做歐拉路。人們又通常把一筆畫成回到出發(fā)點(diǎn)的歐拉路叫做歐拉回路。具有歐拉回路的圖叫做歐拉圖。
你的任務(wù)是:對(duì)于給定的一組無(wú)向圖數(shù)據(jù),判斷其是否成其為歐拉圖?
Input
連續(xù)T組數(shù)據(jù)輸入,每組數(shù)據(jù)第一行給出兩個(gè)正整數(shù),分別表示結(jié)點(diǎn)數(shù)目N(1 < N <= 1000)和邊數(shù)M;隨后M行對(duì)應(yīng)M條邊,每行給出兩個(gè)正整數(shù),分別表示該邊連通的兩個(gè)結(jié)點(diǎn)的編號(hào),結(jié)點(diǎn)從1~N編號(hào)。
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
Sample Output
1
Hint
如果無(wú)向圖連通并且所有結(jié)點(diǎn)的度都是偶數(shù),則存在歐拉回路,否則不存在。
題解:已經(jīng)給了歐拉回路的判定條件,判定一下圖是否連通,然后就可以判斷一下是不是歐拉回路就可以了。
#include <string.h> #include <stdio.h> #include <stdlib.h> #include <math.h>int n;/*n節(jié)點(diǎn)數(shù)量*/ int f[1050];/*記錄點(diǎn)是否被遍歷過(guò)*/ int INF = 1e9+7;/*相當(dāng)于無(wú)窮大*/ int s[1050][1050]; int num[1050];/*記錄節(jié)點(diǎn)的度*/void DFS(int x) {f[x] = 1;int i;for(i=1;i<=n;i++){if(!f[i]&&s[x][i])DFS(i);} }int main() {int t;int m,i,j;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i=1;i<=n;i++)for(j=1;j<=n;j++)s[i][j] = 0;for(i=1;i<=n;i++)num[i] = f[i] = 0;for(i=0;i<m;i++)/*輸入邊的時(shí)候順便把端點(diǎn)的度記錄*/{int a,b;scanf("%d%d",&a,&b);s[a][b] = s[b][a] = 1;num[a] ++;num[b] ++;}for(i=1;i<=n;i++)/*判斷度是否都是偶數(shù)*/{if(num[i]%2)break;}if(i!=n+1)/*說(shuō)明有點(diǎn)的度不是偶數(shù),證明不是歐拉回路*/{printf("0\n");continue;}int ff = 0;for(i=1;i<=n;i++)/*判斷圖是否連通*/{if(!f[i])/*未標(biāo)記說(shuō)明是一顆新的樹(shù)(圖),對(duì)他進(jìn)行DFS*/{ff ++;/*記錄樹(shù)(圖)的數(shù)量*/DFS(i);}}if(ff>1)/*樹(shù)(圖)的數(shù)量不唯一,說(shuō)明圖不連通*/{printf("0\n");continue;}printf("1\n");}return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/luoxiaoyi/p/10067588.html
總結(jié)
以上是生活随笔為你收集整理的SDUT-3364_欧拉回路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html文本框自动赋值,js给文本框赋值
- 下一篇: 对象反序列化出现类型不匹配的情况(spr