题目

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

可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(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. 【原创】ABAP动态编程之功能实现
  2. 4个数之和 4Sum II
  3. 免费python自学攻略-Python自学攻略
  4. 项目一 Part 4.2 基于网格搜索的超参数优化实战
  5. 中兴新支点操作系统挺好用的,国内电脑应预装国产操作系统
  6. AndRoid studio创建APP图标
  7. 微信openid的生成规则研究
  8. 免费无损高品质音乐下载器V3.5
  9. TFT液晶屏使用自建的英文字库
  10. QPSK数字调制系统在AWGN信道下的BER仿真
  11. 怎么彻底处理windows下遇到的广告流氓软件例如:双11天喵、霸业传奇、贪玩蓝约等
  12. python-字典列表集合字符串
  13. python定义一个人类_Python类和人类
  14. Ubuntu| 学习使用Git和Gitee
  15. 如何做好数据分析报告(四)
  16. Mybatis —— @Options注解实现执行参数配置
  17. Javascript实现博客全文搜索功能
  18. 中国万网域名注册总量:7月第一周新增972个
  19. kmp有next和nextval的C语言,KMP算法计算next值和nextVal值
  20. 企业级短视频直播带货系统怎么运营,有哪些步骤?

热门文章

  1. php奖状,利用CSS布局做一个简单的荣誉证书(代码示例)
  2. 百度指数是什么意思?其中的数值又代表什么?
  3. 网站是备案域名还是服务器,网站备案是域名还是服务器
  4. 测试未来宝宝照片软件,未来宝宝照片合成器
  5. 王家林百万大数据人才之路
  6. 堆栈c语言 矩形填色,堆栈涂色官方版下载|堆栈涂色安卓版v0.1下载 - 一游网手机游戏...
  7. BIOS的全局变量gST gBS gDS
  8. gst-launch命令转换为C代码(gstreamer框架)
  9. 实验三mysql查询_实验三 数据库的查询实验
  10. wmp12功能打不开_使用Windows Media Player Plus向WMP添加新功能