7-12 哥尼斯堡的“七桥问题” (25 分)

哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。

可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。

这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个无向图,问是否存在欧拉回路?
输入格式:

输入第一行给出两个正整数,分别是节点数N (1≤N≤1000)和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。
输出格式:

若欧拉回路存在则输出1,否则输出0。
输入样例1:

6 10
1 2
2 3
3 1
4 5
5 6
6 4
1 4
1 6
3 4
3 6

输出样例1:

1

输入样例2:

5 8
1 2
1 3
2 3
2 4
2 5
5 3
5 4
3 4

输出样例2:

0
判断是否为欧拉回路的条件:
1.是否全部连通
2.每个点的入度等于出度,每个点的度数为偶数

#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
#define MAXN  1003
int cnt[MAXN];
int pre[MAXN],n,m;
int find(int x)//并查集的查找
{if (pre[x] == x)return x;elsereturn pre[x]=find(pre[x]);
}
void merge(int x,int y)//并查集的合并
{int fx=find(x);int fy=find(y);if (fx!=fy){pre[fy]=fx;}
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){pre[i]=i;cnt[i]=0;}int x,y;while (m--){scanf("%d%d",&x,&y);merge(x,y);cnt[x]++;cnt[y]++;//记录点的度数}int count=0,flag=0;for(int i=1;i<=n;i++) {if(pre[i]==i)count++;}if(count==1){//只有一个祖先,图是联通的for(int i=1;i<=n;i++){if(cnt[i]%2){flag=1;break;}}if(flag) printf("0\n");//存在奇数度数,不是欧拉回路else printf("1\n");//是联通的,且每个点的度数是偶数}  else printf("0\n");//图压根就不是联通的return 0;
}

哥尼斯堡的“七桥问题” (25 分)相关推荐

  1. 结构与算法 7-32 哥尼斯堡的“七桥问题” (25 分)

    7-32 哥尼斯堡的"七桥问题" (25 分) 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数 ...

  2. 5-32 哥尼斯堡的“七桥问题” (25分)

    5-32 哥尼斯堡的"七桥问题" (25分) 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学 ...

  3. 7-32 哥尼斯堡的“七桥问题” (25分)

    7-32 哥尼斯堡的"七桥问题" (25分) 数据结构与算法题目集 问题: 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥 ...

  4. 7-41 哥尼斯堡的“七桥问题” (25 分)

    哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707-1783)最终解决 ...

  5. 哥尼斯堡的“七桥问题” (25 分)【欧拉回路模板题】

    立志用最少的代码做最高效的表达 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Eule ...

  6. 7-32 哥尼斯堡的“七桥问题” (25 分)(思路+详解+题目分析)两种做法任选其一

    一:题目: 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707-178 ...

  7. 哥尼斯堡的“七桥问题” (25分)

    哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707-1783)最终解决 ...

  8. 7-32 哥尼斯堡的“七桥问题” (25 分)

    判断欧拉回路是否存在的方法 有向图:图连通,所有的顶点出度=入度. 无向图:图连通,所有顶点都是偶数度. 推荐一篇博文,感觉很好---->欧拉回路基本概念+判断+求解 首先判断图是否联通,如果不 ...

  9. PTA 7-32 哥尼斯堡的“七桥问题” (25 point(s))

    哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707-1783)最终解决 ...

  10. 哥尼斯堡的“七桥问题” (欧拉回路,并查集)

    哥尼斯堡的"七桥问题"   (25分) 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉 ...

最新文章

  1. 记录在Ubuntu14.04上安装ryu中遇到的各种坑
  2. Java 如何有效地避免OOM:善于利用软引用和弱引用
  3. nodejs 当前文件路径_NodeJs的几种文件路径
  4. eclipse 函数折叠展开
  5. github上的优秀项目和开发环境配置【转http://www.cnblogs.com/2018/archive/2012/11/09/2763119.html】...
  6. 认识 UML 类关系——依赖、关联、聚合、组合、泛化
  7. 信息学奥赛一本通 1117:整数去重 | OpenJudge NOI 1.9 13
  8. java 页面接收参数_详解SpringMVC——接收请求参数和页面传参
  9. 2021北京网络安全大会议程及直播观看指南
  10. 多年软件测试大牛分享成长经历,一个好的软件测试工程师应该做到这些!
  11. 基于golang的数据结构源码说明
  12. python最大公约数计算。从键盘接收两个整数_python如何求解两数的最大公约数
  13. 为什么华为a1路由器网速变慢_路由器需要每天都关吗?看完专家的解释恍然大悟...
  14. [交叉验证]机器学习中分类器的选择
  15. 3年后,基于mysql控制vsftp的用户认证机制
  16. dx 汇编dec_汇编语言——汇编指令
  17. 微信小程序电子签名实现并识别文字
  18. 单AP对多终端无线上行带宽下降问题
  19. windows2003下如何关闭默认共享
  20. Zebras CodeForces - 950C

热门文章

  1. 2013腾讯实习生面试经历
  2. 春节晚报 | 2月1日 星期二 | 快手推出首届“新春招工会”;罗永浩称“不做VR和元宇宙”;戴姆勒正式更名为梅赛德斯-奔驰...
  3. 润和大数据负责人崔凯参加PostgreSQL中国技术大会
  4. 一步一图一代码,一定要让你真正彻底明白红黑树
  5. Eclipse+Java+Swing实现企业人事管理系统
  6. 利用腾讯云函数搭建免费代理池
  7. Salt Returners-作业结果数据返回器的使用与定制开发方法
  8. pandas读取xls文件
  9. 网站SEO优化的关键词密度怎么布局才算合理
  10. KGB知识图谱通过知识校验完成企业的风险审核