欧拉回路

欧拉回路

欧拉通路: 通过图中每条边且只通过一次,并且经过每一顶点的通路

欧拉回路: 通过图中每条边且只通过一次,并且经过每一顶点的回路

有向图的基图:忽略有向图所有边的方向,得到的无向图称为该有向图的基图。

无向图

设G是连通无向图,则称经过G的每条边一次并且仅一次的路径为欧拉通路;

如果欧拉通路是回路(起点和终点是同一个顶点),则称此回路是欧拉回路

具有欧拉回路的无向图G成为欧拉图

有向图

(1)设D是有向图,D的基图连通,则称经过D的每条边一次并且仅有一次的有向路径为 有向欧拉通路

(2)如果有向欧拉通路是有向回路,则称此有向回路为 有向欧拉回路

(3)具有有向欧拉回路的图D称为有向欧拉图

定理

无向图G存在欧拉通路的充要条件是:G为连通图,并且G仅有两个奇度结点(度数为奇数的顶点)或者无奇度结点。

推论

(1) 当G是仅有两个奇度结点的连通图时,G的欧拉通路必以此两个结点为端点;

(2)当G是无奇度结点的连通图时,G必有欧拉回路

(3)G为欧拉图(存在欧拉回路)的充分必要条件是 G为无奇度结点的连通图

(有向图) 定理

有向图D存在欧拉通路的充要条件是:D为有向图,D的基图连通,并且所有顶点的出度与入度相等;或者 除两个顶点外,其余顶点的出度与入度都相等,而这两个顶点中一个顶点的出度与入度之差为1,另一个顶点的出度与入度之差为-1.

推论

(1)当D除出、入度之差为1,-1的两个顶点之外,其余顶点的出度与入度相等时,D的有向欧拉通路必以出、入度之差为1的顶点作为始点,以出、入度之差为-1的顶点作为终点。

(2)当D的所有顶点的出、入度都相等时,D中存在有向欧拉回路。

(3)有向图D为有向欧拉图的充要条件是 D的基图为连通图,并且所有顶点的出、入度都相等。
下面是一道例题
欧拉回路

//本题为无向图的欧拉回路
//欧拉回路:图连通;图中所有节点度均为偶数
#include<string.h>
#include<stdio.h>
using namespace std;
const int maxn = 1050;
int F[maxn], degree[maxn];
int n, m;
int Find(int x) {
    return F[x] == x ? x : F[x] = Find(F[x]);
}
void Join(int x, int y){
     int xx = Find(x);
     int yy = Find(y);
     if(xx != yy)F[xx] = yy;
}//以上是并查集
int main(){
    while(scanf("%d", &n) && n != 0){
        scanf("%d", &m);
        memset(degree, 0, sizeof(degree));
        for(int i = 1; i <= n; i++)F[i] = i;
        for(int i = 1; i <= m; i++){
            int x, y;
            scanf("%d %d", &x, &y);
            Join(x, y);//并到一起
            degree[x]++;
            degree[y]++;//度数+1
        }
        int tmp = Find(1);
        int flag = 1;
        for(int i = 1; i <= n; i++){
            if(degree[i]&1)flag= 0;//若度数为奇数
            if(tmp != Find(i))flag = 0;//若图不连通
        }
        printf("%d\n", flag);
    }
return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值