对欧拉回路的一些理解

欧拉回路的简单定义:对一个连通图来说,如果遍历这个图的时候可以把每条边都遍历一次,并且只能遍历一次,那么此图便有欧拉回路。

上面的红体字也就说明了判断一个图是否有欧拉回路的关键:

                           1. 必须是连通图   2.每条边必须且只能遍历一次。

那么首先我们要解决第一个问题: 如何判断一个图是否连通呢?

    这里提供两种解决方案: 1.dfs深搜   看看是不是能够访问到所有的顶点。如果能,则连通。反之,则不能;

               2. 通过并查集。 将所有顶点加入集合后,判断一共有多少个祖先,如果祖先数大于1,则不是连通图,如果等于1 则连通。

下面,我们来考虑第二个问题,如何检测每条边遍历一次呢?

    有向图: 入度 = 出度

    无向图: 所有顶点的度为偶数

仔细想一想便可以得到这个结论。

再附上我的错误思路:

    一开始我以为可以通过直接判断一个图的度来是否是欧拉回路,我以为也可以通过度是否为0来判断是否连通,可是这样不对~下面的图就是反例

时间: 2024-08-07 21:16:57

对欧拉回路的一些理解的相关文章

hdu 1878 欧拉回路 水题。测试数据貌似有点问题

欧拉回路 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10135    Accepted Submission(s): 3708 Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路? Input 测试输入包含若干测试用例.每个测试用例

poj1637 Sightseeing tour 混合图欧拉回路判定

传送门 第一次做这种题, 尽管ac了但是完全不知道为什么这么做. 题目就是给一些边, 有向边与无向边混合, 问你是否存在欧拉回路. 做法是先对每个点求入度和出度, 如果一条边是无向边, 就随便指定一个方向, 然后连一条边, 权值为1. 最后统计入度出度, 如果一个点的(入度-出度)%2==1, 就说明不存在欧拉回路. 如果全都满足, 就判断每个点的入度出度的大小关系, 入度>出度, 就向汇点连一条边, 权值为(入度-出度)/2, 相反的话就向源点连边. 跑一遍最大流, 看是否满流, 如果满流就说

hdu 4850 字符串构造---欧拉回路构造序列 递归+非递归实现

http://acm.hdu.edu.cn/showproblem.php?pid=4850 题意:构造长度为n的字符序列,使得>=4的子串只出现一次 其实最长只能构造出来26^4+4-1= 456979 的序列,大于该数的都是不可能的.构造方法,就是那种欧拉回路的序列,此题DFS会爆栈,手动扩展栈也可以AC...... 递归形式的开始WA了,没有细调就换非递归了,后来又想了想,虽然自己电脑上运行不了,但是先把长度按小的来,然后调试代码,然后在扩大,AC了,当时错在MOD,递归的MOD应该是26

UVA 10054 The Necklace (无向图的欧拉回路)

题意: 妹妹有一条项链,这条项链由许多珠子串在一起组成,珠子是彩色的,两个连续的珠子的交汇点颜色相同,也就是对于相邻的两个珠子来说,前一个珠子的末端颜色和后一个珠子的首端颜色相同.有一天,项链断了,珠子洒落了一地,到处都是,妹妹使出浑身解数把地板上能看到的珠子(5-1000)都捡了起来,但是不确定是否收集齐了.给你他妹妹收集的珠子的两端的颜色编号(1 - 50),让你判断是否收集齐了. 思路: 把颜色看成点,把一个珠子看成一个无向边,则问题有解,当且仅当图中存在欧拉回路.于是先判断由题意构建出来

POJ 1780 【手工递归】【欧拉回路】

题意: 1.提供密码的位数. 2.密码的输入可以一直保持,取后n位作为密码.如果密码正确则开锁. 3.设计一种方法使得在输入最少的情况下破译.(即保证每个密码只输入一次) 4.输出输入的数字的序列. 思路: 去密码的前n-1位作为状态节点,将n位数密码作为边.建造有向图. 显然,每个点的入度和出度都为10,则一定存在欧拉回路. 利用简单DFS寻找欧拉回路. (这题好像是要求输出字典序最小的序列) DFS应该不难写,但是这题如果直接递归会爆栈.所以需要手工用栈模拟递归的过程... 屌丝看了大神的关

Fleury 欧拉回路

基本概念 (1)定义 欧拉通路 (欧拉迹)—通过图中每条边一次且仅一次,并且过每一顶点的通路. 欧拉回路 (欧拉闭迹)—通过图中每条边一次且仅一次,并且过每一顶点的回路. 欧拉图—存在欧拉回路的图.欧拉图就是从一顶出发每条边恰通过一次又能回到出发顶点的那种图,即不重复的行遍所有的边再回到出发点. 通路和回路-称vie1e2…envj为一条从 vi到 vj且长度为n的通路,其中长度是指通路中边的条数.称起点和终点相同的通路为一条回路. 简单图-不含平行边和自回路的图. 混合图-既有有向边,也有无向

欧拉回路基础 HDU1878 欧拉回路||并差集

欢迎参加——每周六晚的BestCoder(有米!) 欧拉回路 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10544    Accepted Submission(s): 3845 Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路?

HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)

题意:给一个所有你可能想得到的奇葩无向图,要求给每条边定向,使得每个点的入度与出度之差不超过1.输出1表示定向往右,输出0表示定向往左. 思路: 这题本来很简单的事,在每两个奇数度的点添加1条无向边,就变成了个欧拉回路了.欧拉回路的定义时,只要每个点的度为偶数,必定有欧拉回路的存在.只需要选择任1个点出发,遍历每条边仅1次,得到就是欧拉回路路径了,再根据每条边的方向选0/1.添加的那些无向边都是不会影响答案的,因为欧拉回路跑得起来肯定是每个点的出度等于入度,而每个点最多只会被多加1条边,根据题目

USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解

Cows on Parade Farmer John has two types of cows: black Angus and white Jerseys. While marching 19 of their cows to market the other day, John's wife Farmeress Joanne, noticed that all 16 possibilities of four successive black and white cows (e.g., b