题目

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

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

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

思路

由于要求遍历每一条边,所以对于每一个点,进入这个点的边和离开这个点的边的数目必定相等。

要求满足两个条件

  • 每个点的度为偶数
  • 联通图,即没有孤立点

其中,第二个条件用并查集思想解决,最终集中超过一个点即为非联通图。

代码

#include<bits/stdc++.h>
using namespace std;int find(int pre[], int x)
{int tmp = x;while (pre[tmp]!=tmp){tmp = pre[tmp];}int k = x;while (k!=tmp){int j = pre[tmp];pre[k] = tmp;k = j;}return tmp;
}void join(int pre[], int x, int y)
{int rootx = find(pre, x);int rooty = find(pre, y);if (rootx != rooty){pre[x] = y;}
}int main()
{int n, m; cin >> n >> m;int* pre = new int[n + 1];for (int i = 1; i <= n; i++)pre[i] = i;int* a = new int[n + 1];memset(a, 0, sizeof(int) * (n + 1));for (int i = 0; i < m; i++){int x, y; cin >> x >> y;if (find(pre, x) != find(pre, y))join(pre, x, y);a[x]++, a[y]++;}int flag = 1;int cnt = 0;// 判断联通for (int i = 1; i <= n; i++){if (pre[i] == i)cnt++;}if (cnt != 1)flag = 0;// 判断偶数度if (flag){for (int i = 1; i <= n; i++){if (a[i] == 0 || a[i] % 2 == 1){flag = 0;break;}}}cout << flag << endl;return 0;}

2021秋季《数据结构》_EOJ 1086.哥尼斯堡的七桥问题相关推荐

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

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

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

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

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

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

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

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

  5. 7-32 哥尼斯堡的“七桥问题” (欧拉回路)(PAT算法题目集)

    7-32 哥尼斯堡的"七桥问题" 分数 25 作者 DS课程组 单位 浙江大学 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七 ...

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

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

  7. pta 哥尼斯堡的“七桥问题”

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

  8. 7-12 哥尼斯堡的“七桥问题” (25 分)(并查集)

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

  9. PTA——哥尼斯堡的“七桥问题(出现运行超时?不妨进来看看)

    哥尼斯堡的"七桥问题 题目 答案 总结 题目 答案 #include<iostream> #include<vector> #include<cstring&g ...

  10. 数据结构与算法实验6——图论 7-9 哥尼斯堡的“七桥问题”

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

最新文章

  1. 独家 | 使用Python的OpenAI Gym对Deep Q-Learning的实操介绍(附学习资源)
  2. 回收mysql表碎片_MySQL表碎片整理
  3. [BZOJ 2734] 集合选数
  4. mysql主从配置原理_MySQL主从复制原理
  5. jvm--3.内存管理
  6. eclipse默认编码为GBK,修改为UTF8的方法
  7. linux网路编程之多进程并发服务器
  8. java radix sort_用于Radix Sort的Java程序
  9. 利用Xcode在Mac写第一个C++ project
  10. python3.7.1中IDLE突然打不开;spyder3打不开解决方案
  11. java中== 和 .equals()的区别
  12. L1-043 阅览室-PAT团体程序设计天梯赛GPLT
  13. 商城系统使用redis做什么_B2B2C商城系统与B2C商城系统有什么区别呢?企业该如何选择?...
  14. CAD迷你看图 for Mac
  15. windows 下 LITE IDE go lang 安装配置使用
  16. 【接口测试用例设计思路】
  17. C语言——类型限定词
  18. 大学生前端,毕业面试知道这几点,offter拿到手软
  19. SVG:linearGradient渐变在直线上失效的问题解决方案
  20. 综合布线包括计算机网络,计算机网络综合布线系统

热门文章

  1. 河北工业大学c语言寻宝游戏,计算机技术基础(c语言)课程设计 寻宝游戏.doc
  2. 中级经济师工商管理和人力资源哪个专业容易考一些?
  3. 常见蛋白质种类_生活中常见食物的营养学分类,以及不同食物的蛋白质含量
  4. JS-part12.3-ES6- 箭头函数 / 函数的参数默认值 / 模板字符串 / 点点点运算符 / 解构赋值 / 对象的简写形式
  5. Orcad Capture CIS出BOM表
  6. NLP文本分类--词向量
  7. 利用jink的驱动软件j-flash 合并两个hex的方法,bootloader+app
  8. SSH基础:ssh首次连接的公钥认证
  9. 视频转换器怎样将FLV转MP4格式
  10. cocos入门2:骨骼动画