七桥问题

七桥问题

拟墨画扇 提交于 2020-03-05 05:14:41
问题描述: 18世纪,东普鲁士(今日的德国)的哥尼斯堡(现今叫加里宁格勒,在波罗的海南岸)是一座景致迷人的城市,也是一个在战争中双方必争的战略要地。普勒格尔河横贯其境,并在这儿形成两条支流,把整座城市分割成4个区域(见投影):河的两岸(A和B),河中的岛(克那伊波夫岛)(C)和两条支流之间的半岛(D)。当时有七座桥横跨普勒格尔河及其支流,把河岸、半岛和河心岛连接起来。有趣的桥群和哥城4区的迷人景色吸引了众多的游客,有人在游览时提出这样的问题:能否从某个地方出发,穿过所有的桥各一次后再回到出发点。这个问题在街头流传着,但没有人能回答它。这就是七桥问题,一个著名的图论问题。 解答: 一个图形可以一笔画,必须满足如下两个条件: 1. 图形必须是连通的。 2. 途中的“奇点”个数是0或2。 备注: 奇点:和某个点连接的线的条数是奇数 偶点:和某个点连接的线的条数是偶数 来源: https://www.cnblogs.com/huxiaoyun90/p/3335907.html

哥尼斯堡七桥问题

橙三吉。 提交于 2020-03-05 05:12:26
18世纪著名古典数学问题之一。在 哥尼斯堡 的一个公园里,有七座桥将 普雷格尔 河中两个岛及岛与河岸连接起来(如图)。问是否可能从这四块陆地中任一块出发,恰好通过每座桥一次,再回到起点? 1736年,29岁的欧拉提交了《哥尼斯堡七桥》的论文,圆满解决了这一问题,同时开创了数学新一分支——图论。 欧拉把每一块陆地考虑成一个点,连接两块陆地的桥以线表示。那么上面的图就被抽象成了下图。 图中的A,B,C,D四个点表示两个岛以及河的两岸。这样抽象以后,假设你从某个顶点出发,那么出去的时候走了一座桥,那么你最后回来也必须有一座桥。这就是说,你的起点的桥的数目必须是偶数的。七桥问题中的每个顶点所连接的桥的数目都是奇数个,所以不存在上面的走法。这个问题的实质就是一笔画,欧拉给出了一笔画的条件。 1. 图形必须是连通的。 2. 图中的“奇点”个数是0或2。 后来也就把图中所有边且每边仅通过一次,最后回到起点的回路,称为欧拉回路。具有欧拉回路的图称为欧拉图。 来源: https://www.cnblogs.com/zy666/p/10504295.html

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

夙愿已清 提交于 2020-01-31 12:59:31
哥尼斯堡的“七桥问题”(25 分) 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。 这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个无向图,问是否存在欧拉回路? 输入格式: 输入第一行给出两个正整数,分别是节点数 N ( 1 ≤ N ≤ 1 0 0 0 )和边数 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 1 /* 2 5-32 哥尼斯堡的“七桥问题” (25分) 3 http://pta.patest.cn/pta/test/15/exam/4/question/859 4 并查集(用来判断是否连通) 和 一笔画(每个节点的度必须为偶数) 5 */ 6

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

◇◆丶佛笑我妖孽 提交于 2019-12-19 04:29:33
哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(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 本题最后一个数据点没过.超时了… emmm回来再补充 # include <bits/stdc++.h> using namespace std ; int f [ 1001 ] ; int g [ 1001 ] [ 1001 ] ; int getf ( int u ) { if ( f [ u ] == u ) return u