当前位置: 首页 > news >正文

PTA 天梯赛 7-32:哥尼斯堡的“七桥问题” ← 欧拉回路 + dfs

​【题目来源】
https://pintia.cn/problem-sets/15/exam/problems/type/7?problemSetProblemId=859
https://pintia.cn/problem-sets/15/exam/problems/type/7

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

PTA732

可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。
这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个无向图,问是否存在欧拉回路?

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

【输出格式】
若欧拉回路存在则输出 1,否则输出 0。

【输入样例一】
6 10
1 2
2 3
3 1
4 5
5 6
6 4
1 4
1 6
3 4
3 6​​​​​​​

【输出样例一】
1

【输入样例二】
5 8
1 2
1 3
2 3
2 4
2 5
5 3
5 4
3 4

【输出样例二】
0

【数据范围】
1≤n≤1000​​​​​​​

【算法分析】
● 欧拉路径与欧拉回路定义
图中经过所有边恰好一次的路径称为欧拉路径(也就是一笔画)。
如果此路径的起点和终点相同,则称其为欧拉回路。
注意:若存在欧拉回路,则一定存在欧拉路径。

● 欧拉路径判定
(1)有向图欧拉路径:图中恰好存在 1 个结点的出度比入度多 1(这个结点即为起点 S),1 个结点的入度比出度多 1(这个结点即为终点 T),其余结点的出度=入度。
(2)有向图欧拉回路:所有结点的入度=出度(起点 S 和终点 T 可以为任意点)。
(3)无向图欧拉路径:图中恰好存在 2 个结点的度是奇数,其余结点的度为偶数,这两个度为奇数的结点即为欧拉路径的起点 S 和终点 T。
(4)无向图欧拉回路:所有结点的度都是偶数(起点 S 和终点 T 可以为任意结点)。

● 这个问题可以转化为计算图中连通分量个数和奇度数顶点个数。
如果一个连通分量中所有顶点度数为偶数,则该分量存在欧拉回路,可以一笔画成。
如果一个连通分量中有 k 个奇度数顶点,则需要 k/2 笔才能画完(k 为偶数,根据图论握手定理)。​​​​​​​

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int N=1e3+5;
int g[N][N];
int st[N],du[N];
int n,m;void dfs(int u) {st[u]=1;for(int i=1; i<=n; i++) {if(st[i]==0 && g[u][i]!=0) dfs(i);}
}int main() {cin>>n>>m;int a,b;while(m--) {cin>>a>>b;g[a][b]=g[b][a]=1;du[a]++;du[b]++;}for(int i=1; i<=n; i++) {if(du[i]%2!=0) {cout<<0;return 0;}}dfs(1);for(int i=1; i<=n; i++) {if(st[i]==0) {cout<<0;return 0;}}cout<<1;return 0;
}/*
in:
5 8
1 2
1 3
2 3
2 4
2 5
5 3
5 4
3 4out:
0
*/




【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/160888941
https://blog.csdn.net/hnjzsyjyj/article/details/149031663
https://blog.csdn.net/hnjzsyjyj/article/details/140747624
https://blog.csdn.net/qq_62658309/article/details/127845829

 

http://www.jsqmd.com/news/781993/

相关文章:

  • 2026年郑州全屋定制推荐:哪家口碑稳、落地强、性价比高?业主真实体验对比 - 品牌企业推荐师(官方)
  • NFC技术十年演进:从MWC愿景到IoT核心的生存逻辑与开发实战
  • 2026年耐氢氟酸在线PH计厂家推荐:特殊电极场景应用 - 陈工日常
  • 第9篇:Java运算符简介
  • Seraphine:英雄联盟智能BP与战绩分析助手终极指南
  • VMware macOS解锁工具终极指南:3步在普通PC上运行苹果系统
  • 携程任我行礼品卡回收有技巧?这个平台帮你轻松变现 - 团团收购物卡回收
  • Arm DSU-110架构解析:多核调试与性能监控实践
  • 2026年深圳火花机供应商价格实惠排名,哪家性价比高 - mypinpai
  • 大语言模型越狱攻击:原理、复现与防御实战指南
  • 告别产品克隆:用STC12/STC8H芯片唯一ID打造你的硬件防复制方案
  • 荣嘉机械火花机排名如何,靠谱吗? - mypinpai
  • 天津市SCMP报考官方授权机构及相关指南 - 众智商学院课程中心
  • 魔兽争霸3:如何让经典游戏在现代硬件上重生?
  • I2C通信避坑指南:用逻辑分析仪调试AT24C32 EEPROM读写失败的5个常见原因
  • 如何轻松去除视频硬字幕?Video-subtitle-remover 让二次创作更简单
  • 2026年国内、山东工业旋转供料器优质厂家推荐指南 哪家好 - 奔跑123
  • 3步彻底清理Windows驱动存储,轻松释放数十GB空间
  • 2026年重庆阳台改造装饰装修方案价格一览 - mypinpai
  • Xbox成就解锁器 rag使用教程:免费工具轻松ir解锁Xbox游戏全成就
  • RedFuser框架:AI加速器中的算子融合技术解析
  • Jasminum:3步解决Zotero中文文献识别难题的终极方案
  • ARM ubuntu系统简单操作
  • Onload与Offload网络数据处理架构:工业场景下的核心辨析与选型策略
  • AlienFX-Tools逆向工程解析:ACPI协议破解与硬件控制技术深度剖析
  • 手把手教你为ZYNQ裸机LWIP库添加KSZ9031 PHY和EMIO支持(Vivado 2017.4)
  • 2026年慢走丝口碑排行榜,想买的看过来 - mypinpai
  • 如何在Windows上免费打造透明任务栏:TranslucentTB完整教程
  • 如何快速掌握Mermaid Live Editor:新手完全指南
  • 蓝桥杯嵌入式G4实战:用STM32CubeMX和HAL库搞定定时器捕获测频率(附555信号源接线)