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

可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(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
#include<bits/stdc++.h>
#define MAXN 1001
using namespace std;int degree[MAXN]{0};        // 每个节点的度数
int father[MAXN];           // 并查集// 寻找根节点
int findFather(int x){return (x == father[x]) ? x : father[x] = findFather(father[x]);
}void unite(int x, int y) {int fatherX = findFather(x);int fatherY = findFather(y);if(fatherX != fatherY) father[fatherX] = fatherY;
}main(){ios::sync_with_stdio(false);int N, M, u, v; cin >> N >> M;// 并查集初始化for(int i = 1; i <= N; ++i) father[i] = i;while(cin >> u >> v){unite(u, v);degree[u]++, degree[v]++;}// 结果判断:判断是否连通、判断度数是否为偶数bool flag = true;// 连通块个数 int number = 0;for(int i = 1; i <= N; ++i){// 度数为奇数不连通if(degree[i] % 2 != 0) flag = false;// 如果序号等于并查集根节点 则代表一个连通块if(i == father[i]) number++;}// 连通块个数>1不连通if(number > 1) flag = false;cout << flag ? "1" : "0";
}

for(int i = 1; i < MANX; i++) father[i] = i;

并查集初始化,father[i] 数组赋值 i 。

return (x == father[x]) ? x : father[x] = findFather(father[x]);

判断x是否是根节点,true返回x,否则令faher[x]递归继续找根节点。

if(i == father[i]) number++;

当序号 i 是根节点时 判断为一个连通块

参考代码

PTA 7-32 哥尼斯堡的“七桥问题” (25 point(s))相关推荐

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 2.Linux磁盘,文件系统管理--创建文件系统
  2. 【哈佛商学院和斯坦福要求学生必看的20部电影】中/英字幕
  3. python爬虫软件-Python爬虫工具篇 - 必会用的6款Chrome插件
  4. SpringBoot实现Redis分布式锁
  5. MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
  6. 使用pycharm创建一个项目 利用自己建好的虚拟环境
  7. Ansible(二)——基本环境的部署以及常用模块的使用
  8. oslo_messaging使用eventlet executor时rpc无法调用的问题
  9. Red Hat TimesTen安装记录
  10. Python使用matplotlib可视化模拟正弦余弦折线图
  11. List集合之LinkedList
  12. 计算机软件用户体验报告,软件项目用户体验性测试报告.doc
  13. SPI通信协议详解(四)
  14. 点云与图像融合的深度学习方法综述
  15. 阿里图标库使用(在线使用)
  16. 版权符号圈c的输入方法
  17. openbsd系统可以做什么服务器,OpenBSD 3.8 release 架设FTP服务器
  18. 求你了别秀了——Reversion Count
  19. 小学教育怎么选择特别容易写的论文选题?
  20. PDP-11 计算机

热门文章

  1. 非科班程序员看科班程序员和非科班程序员之间的差别
  2. 【Vue2 组件间数据的双向绑定】
  3. 一套跨平台五子棋网游的开发经历
  4. JQuery实现电影排行榜
  5. 计算机在职研究生学费多少?贵不贵?
  6. 基于C++开发的仓库管理系统(附源码)
  7. MySQL的配置方法以及数据库配置常见错误及其解决方法
  8. 人工智能即将带领我们进入下一个时代?
  9. QScintilla的各种颜色字体等设置
  10. 【蓝桥杯 迷宫 2019省赛javaA组】BFS解法该死的Excel竟如此甜美