A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

对于无向图存在欧拉回路的两个条件:

1)所有的度为偶数

2)连通图

对于有向图:

1)所有的顶点入度等于出度

2)连通图

代码如下:




  • #include<bits/stdc++.h>



  • using namespace std;



  • const int maxn = 1005;



  • vector<int>G[maxn];



  • int vis[maxn];



  • void dfs(int t){



  •     vis[t] = 1;



  •     for(int i = 0;i<G[t].size();i++){



  •         if(!vis[G[t]])dfs(G[t]);



  •     }



  • }



  • int main(){



  •     int n,m;



  •     while(cin>>n&&n){



  •             cin>>m;



  •         for(int i = 0;i<n;i++)G.clear();



  •         memset(vis,0,sizeof(vis));



  •         for(int i = 0;i<m;i++){



  •             int a,b;



  •             cin>>a>>b;



  •             a--,b--;



  •             G[a].push_back(b);



  •             G.push_back(a);



  •         }



  •         int yn = -1;



  •         for(int i = 0;i<n;i++){



  •             int len = G.size();



  •             if(len%2)yn++;



  •             if(!vis){dfs(i);yn+=1;}



  •         }



  •         if(yn == 0)cout<<1<<endl;



  •         else cout<<0<<endl;



  •     }



  • }




1 个回复

倒序浏览

很不错,受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马