PTA 7-32 哥尼斯堡的“七桥问题” (25 point(s))
哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。
可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(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))相关推荐
- 结构与算法 7-32 哥尼斯堡的“七桥问题” (25 分)
7-32 哥尼斯堡的"七桥问题" (25 分) 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数 ...
- 5-32 哥尼斯堡的“七桥问题” (25分)
5-32 哥尼斯堡的"七桥问题" (25分) 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学 ...
- 7-32 哥尼斯堡的“七桥问题” (25分)
7-32 哥尼斯堡的"七桥问题" (25分) 数据结构与算法题目集 问题: 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥 ...
- 7-41 哥尼斯堡的“七桥问题” (25 分)
哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707-1783)最终解决 ...
- 7-32 哥尼斯堡的“七桥问题” (25 分)(思路+详解+题目分析)两种做法任选其一
一:题目: 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707-178 ...
- 哥尼斯堡的“七桥问题” (25 分)【欧拉回路模板题】
立志用最少的代码做最高效的表达 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Eule ...
- 哥尼斯堡的“七桥问题” (25分)
哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707-1783)最终解决 ...
- 7-32 哥尼斯堡的“七桥问题” (25 分)
判断欧拉回路是否存在的方法 有向图:图连通,所有的顶点出度=入度. 无向图:图连通,所有顶点都是偶数度. 推荐一篇博文,感觉很好---->欧拉回路基本概念+判断+求解 首先判断图是否联通,如果不 ...
- 哥尼斯堡的“七桥问题” (欧拉回路,并查集)
哥尼斯堡的"七桥问题" (25分) 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉 ...
最新文章
- 2.Linux磁盘,文件系统管理--创建文件系统
- 【哈佛商学院和斯坦福要求学生必看的20部电影】中/英字幕
- python爬虫软件-Python爬虫工具篇 - 必会用的6款Chrome插件
- SpringBoot实现Redis分布式锁
- MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
- 使用pycharm创建一个项目 利用自己建好的虚拟环境
- Ansible(二)——基本环境的部署以及常用模块的使用
- oslo_messaging使用eventlet executor时rpc无法调用的问题
- Red Hat TimesTen安装记录
- Python使用matplotlib可视化模拟正弦余弦折线图
- List集合之LinkedList
- 计算机软件用户体验报告,软件项目用户体验性测试报告.doc
- SPI通信协议详解(四)
- 点云与图像融合的深度学习方法综述
- 阿里图标库使用(在线使用)
- 版权符号圈c的输入方法
- openbsd系统可以做什么服务器,OpenBSD 3.8 release 架设FTP服务器
- 求你了别秀了——Reversion Count
- 小学教育怎么选择特别容易写的论文选题?
- PDP-11 计算机