题目传送门
题目
欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
Input
测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结束。
Output
每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。
Sample Input

3 3
1 2
1 3
2 3
3 2
1 2
2 3
0

Sample Output

1
0

思路:
即首先判断能否构成环,接着判断是否图中所有的点的度都为偶数,同时满足这两点,才能构成欧拉回路。

dfs法

#include <iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#define maxn 2000
using namespace std;int degree[maxn],n,m;
bool visit[maxn];
vector<int>edge[maxn];
void dfs(int point){int i,j,p;visit[point]=1;for(i=0;i<edge[point].size();i++){p = edge[point][i];if(!visit[p])dfs(p);}
}int main() {int i,j,a,b;while(scanf("%d",&n)!=EOF&&n){scanf("%d",&m);for(i=1;i<=n;i++){  //初始化 degree[i]=0;edge[i].clear();}for(i=0;i<m;i++){scanf("%d%d",&a,&b);if(a!=b){  //无向图 edge[a].push_back(b);edge[b].push_back(a);degree[a]++;degree[b]++;}}bool flag=0;for(i=1;i<=n;i++){if(degree[i]&1){printf("0\n");flag=1;break;}}if(flag)continue;memset(visit,0,sizeof(visit));dfs(1); //判断是否连通 for(i=1;i<=n;i++){if(!visit[i]){  flag=1;break;}}if(flag)printf("0\n");elseprintf("1\n");}return 0;
}

并查集法

#include<cstdio>using namespace std;const int N = 1e3+5;int deg[N];
int uf[N];int find1(int x)
{int r = x;while (r!=uf[r]) r=uf[r];for (int i=x,j;i!=r;i=j){j = uf[i];uf[i] = r;}return r;
}void join(int a,int b)
{int c = find1(a),d = find1(b);if (c!=d) uf[c] = d;
}//并查集找组织int main()
{int T,n,m,u,v;while (scanf("%d",&n),n){scanf("%d",&m);for (int i=1;i<=n;i++) deg[i] = 0,uf[i] = i;///初始化while (m--){scanf("%d %d",&u,&v);join(u,v);deg[u]++;deg[v]++;}int cnt = 0;for (int i=1;i<=n;i++) if (uf[i]==i) cnt++;if (cnt==1){bool flag = true;for (int i=1;i<=n;i++) if (deg[i]&1) {flag = false;break;}/*奇数&1=真,偶数&1=假。无向图中只有每个点的度都为偶数,才是欧拉回路*/if (flag) printf("1\n");else printf("0\n");}else printf("0\n");}return 0;
}

无向图判断是否为欧拉回路(以HDU1878为板子题)相关推荐

  1. Hdu 1878 欧拉回路[判断是否存在欧拉回路]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878 题目的意思很简单,就是给你一个无向图..问存在欧拉回路吗?Yes or No.1000个节点.. ...

  2. 欧拉回路(HDU-1878)

    Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路? Input 测试输入包含若干测试用例.每个测试 ...

  3. 欧拉回路(简单判断是否有欧拉回路存在)

    https://cn.vjudge.net/contest/209173#problem/N 题目大意:给出N个点,M条边,问有没有欧拉回路存在. 题目分析:1.无向图欧拉回路是否连通2.所有点的度为 ...

  4. c++编写算法判断二叉树是否为完全二叉树_[校招-算法题] 二叉树基础算法1

    二叉树是面试中常考的数据结构,因为涉及大量指针操作,因此可以考察思维的严谨性和灵活性.但是校招中的二叉树题规律性很强,因此需要总结一下. 各种常见的二叉树概念 二叉树:每个结点最多有两个子树(左子树和 ...

  5. c++ 判断数学表达式有效性_高考数学大题如何quot;保分quot;?学霸教你六大绝招!...

    高中里有句话,得数学者得高考,此言不虚,清北学生难见数学不足140的,反之,数学140多分的除非特别偏科,大学一般不会差.那么我们怎么"得数学"呢? 针对目前高三的学生:如果你的数 ...

  6. 【HDU - 3002】King of Destruction(无向图全局最小割,SW算法,模板题)

    题干: Zhou xingxing is the successor of one style of kung fu called "Karate Kid".he is falli ...

  7. python 判断子序列_Leetcode练习(Python):第392题:判断子序列:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。...

    题目: 判断子序列:给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅包含英文小写字母.字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串 ...

  8. 判断条件UVa 10192 - Vacation(LCS水题)

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 题目:http://uva.onlinejudge.org/index.ph ...

  9. 使用java判断环形链表的起点,Leetcode 142题

    判断环形链表的起点(java语言)Leetcode 142题 Leetcode 142题 判断环形链表的起点 在这里我们是使用快慢指针 (双指针) 的方式来解决此问题. ​ 我们设置一个慢指针指向头结 ...

最新文章

  1. VC++6中的一些快捷键(陆续补充中。。。)
  2. java 中调用docker_如何通过Java程序执行docker命令
  3. python申请内存函数_python进阶用法2 【从帮助函数看python内存申请机制】
  4. [Leetcode][第114题][JAVA][二叉树展开为链表][递归][迭代]
  5. Kinect v1在windows上的使用教程
  6. shell解析html文件,[Shell] Shell 生成 HTML脚本,可显示表格
  7. 17暴力或dfs:凑算术
  8. 2019最新大数据分析智能BI Tableau教程视频(18章节)
  9. python爬取豆瓣电影top250网络响应_python使用requests+re爬取豆瓣电影top250简单入门爬虫...
  10. python redis教程_Python与Redis的连接教程
  11. Python语言程序设计基础_期末作品设计——收银软件(2020-2 B)_答案_通识教育必修课程_上海师范大学
  12. window10设置系统还原点和使用还原点还原系统
  13. php 禁止抓取,禁止抓取.php的写法哪个对:Disallow: /*.php$和Disallow: /.php$ - 搜外SEO问答...
  14. C#联合halcon框架实现插件编程 运动控制卡 多工具 测量 九点标定全新
  15. ava_212_反射机制_动态操作_构造器_方法_属性_练习
  16. 助力一带一路,上海三思点亮40公里黑山南北高速公路
  17. linux c十六进制转十进制函数,用Linux/Unix命令把十六进制转换成十进制(转)
  18. 修复克米3.5改密破解模板搜索框不显示问题
  19. 基于PHP+MySQL的动漫交流及动漫周边购物网站
  20. 【免费思维导图软件】万彩脑图大师教程 | 导出导入思维导图模板

热门文章

  1. 百度聚合卡顿解决代码
  2. 这几款软件,你千万别装
  3. html 下拉组件被下面的组件挡住,select挡住div的5种解决方法
  4. 计算机 实验室安全准入制度,实验室安全准入制度
  5. 切绳子【洛谷P1577】【二分】
  6. ARM7-LPC213x(二)LED流水灯
  7. Google推荐系统Wide Deep Learning for Recommender Systems论文翻译解读
  8. 分析Crash 日志一
  9. okhttp下载保存图片并更新图库
  10. 深圳软件测试培训:测试中常见移动端基础知识