当前位置:   article > 正文

欧拉回路的判断_欧拉回路判断代码

欧拉回路判断代码

最近多校碰到几道和欧拉回路相关的题目,这里做个总结

代码:dfs 递归实现:如果是欧拉回路,则输出“1”,否则输出“0”。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N=1005;
  4. int G[N][N];///邻接矩阵存储图
  5. int vis[N];///遍历时标记该点是否被访问过
  6. int deg[N];///存储节点的度
  7. void dfs(int v,int n){///深度优先遍历,递归
  8. vis[v]=1;
  9. for(int i=1; i<=n; ++i){
  10. if(G[v][i]&&!vis[i]) dfs(i,n);
  11. }
  12. }
  13. void init(){
  14. memset(G,0,sizeof(G));
  15. memset(vis,0,sizeof(vis));
  16. memset(deg,0,sizeof(deg));
  17. }
  18. int main(){
  19. int n,m;
  20. while(scanf("%d%d",&n,&m)!=EOF&&n){
  21. init();
  22. int flag=1;
  23. for(int i=0; i<m; ++i){
  24. int u,v;scanf("%d %d",&u,&v);
  25. G[u][v]=G[v][u]=1;deg[u]++;deg[v]++;
  26. }
  27. dfs(1,n);///从第一个顶点搜索
  28. for(int i=1; i<=n; ++i){
  29. if(!vis[i]){
  30. flag=0;///若有点未曾被访问,即一次深度遍历有未访问的点,则不存在欧拉回路
  31. break;
  32. }
  33. if(deg[i]&1){
  34. flag=0;///若有点的度不是偶数,则不存在欧拉回路
  35. break;
  36. }
  37. }
  38. if(flag) puts("1");
  39. else puts("0");
  40. }return 0;
  41. }
  42. 并查集:
  43. #include <bits/stdc++.h>
  44. using namespace std;
  45. const int N=1005;
  46. int deg[N],fa[N];
  47. int t,n,m;
  48. int Find(int x){
  49. if(x==fa[x]) return x;
  50. return fa[x]=Find(fa[x]);
  51. }
  52. void Union(int x,int y){
  53. int fx=Find(x);int fy=Find(y);
  54. if(fx!=fy) fa[x]=fy;
  55. }
  56. bool solve(){
  57. int cnt=0;
  58. for(int i=1; i<=n; ++i){
  59. if(fa[i]==i) cnt++;
  60. }
  61. if(cnt!=1) return false;
  62. for(int i=1; i<=n; ++i){
  63. if(deg[i]&1) return false;
  64. }
  65. return true;
  66. }
  67. int main()
  68. {
  69. while(scanf("%d%d",&n,&m)!=EOF&&n){
  70. for(int i=1; i<=n; ++i) {fa[i]=i,deg[i]=0;}
  71. int u,v;
  72. for(int i=0; i<m; ++i){
  73. scanf("%d%d",&u,&v);Union(u,v);deg[u]++;deg[v]++;
  74. }
  75. if(solve()) puts("1");
  76. else puts("0");
  77. } return 0;
  78. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/606777
推荐阅读
相关标签
  

闽ICP备14008679号