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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hdu 1116 欧拉路

發(fā)布時(shí)間:2024/2/28 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 1116 欧拉路 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一個(gè)有向圖存在歐拉路:

在有向圖中,如果圖是弱連通的,并且圖中除開(kāi)兩個(gè)頂點(diǎn),其他所有頂點(diǎn)的入度等于出度,并且這兩個(gè)點(diǎn)中,一個(gè)點(diǎn)入度比出度多1,另一個(gè)點(diǎn)出度比入度少1,那么該圖存在歐拉路,這是個(gè)充要條件。


這個(gè)題中還要判斷是是否連通,用并查集 記錄判斷下即可。


#include<cstdio> #include<iostream> #include<cstring> using namespace std;int in[50],out[50]; int root[50];void init() {for(int i=0;i<=25;i++){root[i]=i;} }int find(int x) {int temp=root[x];if(x==root[x]) return x;else{return root[x]=find(root[x]);} }int main() {int t;scanf("%d",&t);while(t--){int n,i;init();memset(in,0,sizeof(in));memset(out,0,sizeof(out));char s[2000];scanf("%d",&n);getchar();for(i=0;i<n;i++){gets(s);int l1=strlen(s);in[s[0]-'a']++;out[s[l1-1]-'a']++;int ra=find(s[0]-'a');int rb=find(s[l1-1]-'a');if(ra!=rb) root[rb]=ra;}int flag1=0,flag2=0;int flag3=0,time=0;for(i=0;i<=25;i++){if(in[i]||out[i]){if(i==find(i))time++;}if(in[i]-out[i]==1) {flag1++;continue;}if(in[i]-out[i]==-1){flag2++;continue;}if(in[i]!=out[i]) {printf("The door cannot be opened.\n");flag3=1;break;}}if(flag3==0){if(time==1){if(flag1==0&&flag2==0) printf("Ordering is possible.\n");else if(flag1==1&&flag2==1) printf("Ordering is possible.\n");else printf("The door cannot be opened.\n");}elseprintf("The door cannot be opened.\n");}} }

總結(jié)

以上是生活随笔為你收集整理的hdu 1116 欧拉路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。