图论·欧拉迹

欧拉路径或者欧拉回路都要求经过给定图$G$中所有边恰好一次,在此之上欧拉回路还要求路径是闭合的,即能找到一条从某点出发并以此点为终点的欧拉路径。二者均称为欧拉迹。对于无向图,存在欧拉迹当且仅当图中度数为奇数的结点数目为$0$或$2$。如果图$G$中所有结点度数均为偶数,那么图中的所有欧拉迹均为欧拉回路;而如果度数为奇数的结点数目恰好为$2$,则图中所有欧拉迹均为非闭合的欧拉路径。

下面给出一些摘自wiki关于欧拉迹的性质:

  • 一个无向图能够被分解成若干个边集互不相交的环当且仅当图中所有结点度数均为偶数当且仅当图存在欧拉回路。
  • 一个有向图存在欧拉回路当且仅当图中所有结点出度入度均相等。
  • 一个有向图存在欧拉路径当且仅当图中至多存在一个出度比入度大$1$的结点,至多存在一个入度比出度大$1$的结点,其余结点出入度均相等

给出找出无向图$G$中欧拉回路的Hierholzer算法(线性时间复杂度):

  • 任选一个起点,从该点选择为访问的边到达下一个结点,可以断定在返回起点之前不会被阻塞,因为结点的度数为偶数,但不能确定访问所有边。
  • 从以上路径中任意邻接边为被全部访问的结点执行同样操作,得到另一个环,与上一个环合并,持续此操作至所有边均被访问。
时间: 2024-12-29 06:53:50

图论·欧拉迹的相关文章

[ACM] POJ 2513 Colored Sticks (Trie树,欧拉通路,并查集)

Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 29736   Accepted: 7843 Description You are given a bunch of wooden sticks. Each endpoint of each stick is colored with some color. Is it possible to align the sticks in a st

欧拉除了函数,还有个回路----图论之路之欧拉路径欧拉回路

首先我们来百度一下,欧拉路径以及回路的定义: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径.若该路径是一个圈,则称为欧拉(Euler)回路. 具有欧拉回路的图称为欧拉图(简称E图).具有欧拉路径但不具有欧拉回路的图称为半欧拉图. 通俗来说,就是欧拉路径就是图中的每条边经过却只经过一次的路径,而最后回到起点的路径就是欧拉回路. 那给你一个图怎么判断存不存在,欧拉路径或者欧拉回路呢 首先,判断图是不是连通的,这个就很简单了,dfs或者并查集都可以. 然后就是根据定理 欧

欧拉函数

void Euler_Sieve_Method(int * euler, int n) { euler[1] = 1; for (int i = 2; i < n; i++) { euler[i] = i; } for (int i = 2; i < n; i++) { if (euler[i] == i) { for (int j = i; j < n; j += i) { euler[j] = euler[j] / i * (i - 1); } } } } void Euler_Si

hdu1695(莫比乌斯)或欧拉函数+容斥

题意:求1-b和1-d之内各选一个数组成数对,问最大公约数为k的数对有多少个,数对是有序的.(b,d,k<=100000) 解法1: 这个可以简化成1-b/k 和1-d/k 的互质有序数对的个数.假设b=b/k,d=d/k,b<=d.欧拉函数可以算出1-b与1-b之内的互质对数,然后在b+1到d的数i,求每个i在1-b之间有多少互质的数.解法是容斥,getans函数参数的意义:1-tool中含有rem位置之后的i的质因子的数的个数. 在 for(int j=rem;j<=factor[i

欧拉函数常用性质

欧拉函数定义:设n 为正整数,则1,2......,n中与n互质的整数个数记作f(n). 1.1 若n为素数,f(n)=n-1; 1.2 整数n=p*q,p,q为不同素数,则f(n)=f(p)*f(q)=(p-1)*(q-1) 1.3 n=p^a*q^b,f(n)=f(p^a)*f(q^b)=n*(1-1/p)*(1-1/q) 1.4 分解质因子相乘,f(n)=n*(1-1/p1)*(1-1/p2)*.......*(1-1/pk). f(100)=f(2^2*5^2)=100*1/2*4/5=

POJ2478(SummerTrainingDay04-E 欧拉函数)

Farey Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16927   Accepted: 6764 Description The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b)

POJ 2478 欧拉函数(欧拉筛法) HDU 1576 逆元求法

相关逆元求法,我之前有写过,还有欧拉函数的求法,欧拉函数与逆元的关系  点击 POJ 2478 又是一个打表的题目,一眼看出结果就是前n个欧拉函数值的和. 这里直接计算欧拉函数值求和会超时,看见多组数据. 然后就是计算欧拉函数,打表就好了. #include <stdio.h> #include <string.h> #include <iostream> using namespace std; typedef long long LL; const int N =

LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数+打表)

/* 题意: 对于每个数字a[i]找到一个数num[i],num[i]的欧拉函数值大于等于a[i], 求找到的所有数的最小和. */ #include <algorithm> #include <iostream> #include <cmath> #include <cstdio> #include <cstring> #include <map> using namespace std; typedef long long LL;

[BZOJ 2190][SDOI2008]仪仗队(欧拉函数)

Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图).现在,C君希望你告诉他队伍整齐时能看到的学生人数. Solution 能被看到的只能是坐标(x,y)x与y互质的学生 观察可以发现1到n-1欧拉phi函数的和*2+1即答案 #include<iostream> #include<cstdio> #include<