首页 > 其他分享 >欧拉图(欧拉通路&欧拉回路)

欧拉图(欧拉通路&欧拉回路)

时间:2024-02-22 20:55:59浏览次数:22  
标签:通路 出度 dfs 回路 条边 欧拉

欧拉图(欧拉通路&欧拉回路)

定义

通过图中所有边恰好一次的通路称为欧拉通路。

通过图中所有边恰好一次的回路称为欧拉回路。

具有欧拉回路的无向图或有向图称为欧拉图。

具有欧拉通路但不具有欧拉回路的无向图或有向图称为半欧拉图。

有向图也可以有类似的定义。

非形式化地讲,欧拉图就是从任意一个点开始都可以一笔画完整个图,半欧拉图必须从某个点开始才能一笔画完整个图。

判定

1.对于无向图,所有边都是连通的

(1) 存在欧拉路径的充分必要条件: 度数为奇数的点只能是0或者2个(0个为欧拉回路的情况)

(2) 存在欧拉回路的充分必要条件: 度数为奇数的点只能有0个

2.对于有向图,所有边都是连通的

(1) 存在欧拉路径的充分必要条件: 要么所有点出度均等于入度(欧拉回路情况);要么除了两个点之外,其余点的出度等于入度,剩余的两个点:一个满足出度比入度多1(起点),另一个满足入度比出度多1(终点)

(2) 存在欧拉回路的充分必要条件: 所有点的出度均等于入度

性质

非形式化地讲,欧拉图就是从任意一个点开始都可以一笔画完整个图,半欧拉图必须从某个点开始才能一笔画完整个图。

欧拉图中所有顶点的度数都是偶数。

若\(G\)是欧拉图,则它为若干个环的并,且每条边被包含在奇数个环内。

寻找方法

1 记录点的情形

void dfs(int x)
    对于从x出发的每条边(x, y)
        如果该边没有被访问过
            把这条边删去
            dfs(y)
    把x入栈

main()
    dfs(1)
    倒序输出栈中所有的节点

2 记录边的情形

void dfs(int x)
    对于从x出发的每条边i(x, y)
        如果该边没有被访问过
            把这条边删去
            dfs(y)
            把边i入栈
main()
    dfs(1)
    倒序输出栈中所有的边

栗子

[USACO3.3]骑马修栅栏 Riding the Fences

如题,就是找到欧拉回路然后记录点

CF429E Points and Segments

题目大意

在一个数轴给定n条线段,可以选择把他染红或蓝,要求数轴上的每个点所经过的红蓝线段差小于等于1

题解:

首先离散化,我们考虑设染红操作为区间+1,染蓝为区间-1,然后每个点所经过的红蓝线段差就转化成了每个点之值,于是我们先考虑最简单的,就是每个点的值为0才合法。

然后就不是人能想到的东西了(OI的难题就是如此,这种没有指向性的东西,唉)

将一个区间+1看作l到r连一条边,区间-1看作r到l连一条边,然后竟然发现,要满足合法(也就是任意点的值为0)就是在上面满足能被欧拉回路覆盖.

然后如图非常好理解。

但是这种情况非常局限,如果不能被欧拉回路覆盖就不是合法情况。

于是就将合法条件拓展到原问题,每个点的值为-1,0,或1

然后就引入虚边(绿边)

然后对于存在奇点的图,显然奇点的数量一定为偶数,将所有奇点从小到大排序,设为 {A1,A2,……An},在 A1和 A2,A3和 A4,……An-1和 An之间连一条无向边,称为虚边。

注意一下正确性,由于每个点上最多有1条虚边,所以他要么是红,要么是蓝,对点的值影响为0,1,-1恰为题意。

所以就没了,注意一下答案的输出。

标签:通路,出度,dfs,回路,条边,欧拉
From: https://www.cnblogs.com/zhy114514/p/18024050

相关文章

  • 欧拉路径
    欧拉路径欧拉路径定义:可以一笔画走完且不重复经过一条边的路径可用欧拉路径走完有向连通图判定:所有点入度与出度之差\(\le1\)入度与出度之差为1的点个数为0或2(总度数为偶数,这种点不可能只有1个,若有2个则一起点一终点)可用欧拉路径走完无向连通图判定:度数为奇数的点的个......
  • [算法学习笔记] 欧拉路
    免责声明:本文定义并不严谨,笔者是从“浅显易懂”的角度出发写本文。若您需要严谨定义请移步至其他学术文章。基本定义欧拉路径,即能不重不漏经过图上所有边的路径。也可以说“一笔画问题”。特殊地,如果这条路径的起点和终点一致,则这条路径叫做“欧拉回路”。其他的定义:欧拉图......
  • 欧拉函数——gcd问题的一大利器
    定义欧拉函数,即\(\varphi(n)\),表示的是\([1,n]\)内与\(n\)互质的数的个数,如\(\varphi(1)=1\)。若\(n\)是质数,显然\(\varphi(n)=n-1\)。性质欧拉函数是积性函数。若\(\gcd(a,b)=1\),则\(\varphi(a\timesb)=\varphi(a)\times\varphi(b)\)。更特殊......
  • 欧拉函数学习笔记
    前言本人能力有限,有错误欢迎指出。定义\(\varphi(n)\)表示的是小于等于\(n\)和\(n\)互质的数的个数。公式设\(n=\prod\limits_{i=1}^{s}p_i^{k_i}\),有\[\begin{aligned}\varphi(n)&=\prod_{i=1}^s\varphi(p_i^{k_i})\\&=\prod_{i=1}^sp_i^{k_i}-p_i^{k_i-1}\\&=\prod......
  • Uva--10129 Play On Words(欧拉路)
    记录15:422023-5-26reference:《算法竞赛入门经典第二版》例题6-16把字母看作结点,单词看成有向边,则问题有解,当且仅当图中有欧拉路径。有向图欧拉道路(回路)问题,有向图欧拉道路需要基图连通,且度数满足最多只能有两个点的入度不等于出度,而且必须是其中一个点的出度恰好比入......
  • 欧拉函数
    欧拉函数欧拉函数\(\varphi(n)\)表示\(1\simn-1\)中与\(n\)互质的数的个数。显然的,当\(n\)为质数,有\(\varphi(n)=n-1\)。性质与推导显然的,当\(\gcd(a,b)\),有\(\varphi(a\timesb)=\varphi(a)\times\varphi(b)\),oi-wiki上管这个叫做积性函数。显......
  • 欧拉路径、欧拉回路、欧拉图傻傻分不清楚?看这一篇就够了!
    欧拉路径、回路、图前言当一手标题党,快乐~之前一直分不清楚,写篇笔记分辨一下。欧拉路径可以一笔画的路径,称为欧拉路径。不要求起点终点为同一点。判定:有向图:图中只有一个出度比入度大\(1\)的点(起点),与一个入度比出度大\(1\)的点(终点),其余点出入度相等。无向图:图中只有......
  • 欧拉路径
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constllN=1e5+10;vector<ll>G[N],ans;lln,m,du[N],cur[N],s=1;voiddfs(llu){ for(lli=cur[u];i<G[u].size();i=cur[u]){ cur[u]=i+1; dfs(G[u][i]); } ans.push_back(u)......
  • CEOI2023D1T3(LOJ4019) Brought Down the Grading Server? (分治+欧拉回路)
    因为我们有\(S=2^k\),所以我们先考虑\(k=1\)即\(S=2\)的时候应该怎么做。发现如果我们对于每一个核心从\(t_1\)向\(t_2\)连一条无向边,如果我们把「不交换\(t_1,t_2\)」看成将这条边定向为\(t_1\tot_2\),否则如果「交换\(t_1,t_2\)」看成将这条边定向为\(t_2\tot_1......
  • 看如何理解老婆的脑回路2
    主要是重复,整理。本能有关对男性来说,维持婚姻的方法就是从女性出自母性本能的攻击之中保护自己。女性大脑出于自我保护的本能,而习惯性的容易打开消极的开关。尤其是周围存在比自己更加强大的人时更是如此。与其他哺乳动物相比,女性每次生产的后代数量很少,在育儿上总是会遇到“......