欧拉回路简要笔记

欧拉回路简要笔记

补一补一直不熟悉的一个知识点

概念与判定

定义

  • 欧拉路径:一个路径被称为欧拉路径,当且仅当这条路径经过每条边恰好一次且经过了所有的点(点可以多次经过)
  • 欧拉回路:起点与终点重合的欧拉路径是欧拉回路
  • 欧拉图:有欧拉回路的图是欧拉图
  • 半欧拉图:只有欧拉路径而没有欧拉回路的图是半欧拉图
  • 奇点:无向图中度数为奇数的店
  • 偶点:无向图中度数为偶数的点
  • 基图:有向图去掉边的方向形成的无向图

判定

无向图

  • 无向图存在欧拉回路(为欧拉图),当且仅当其连通,且奇点个数为 \(0\)
  • 无向图存在欧拉路径且不存在欧拉回路(为半欧拉图),当且仅当其连通,且其存在两个奇点且其它点均为偶点。这两个奇点为这条欧拉路径的起点和终点。

有向图

  • 有向图存在欧拉回路,当且仅当当且仅当其基图连通,且所有的点的入度与出度相同。
  • 有向图存在欧拉路径且不存在欧拉回路,当且仅当其当且仅当其基图连通,且存在一个点出度比入度大 \(1\)(起点),一个点入度比出度大 \(1\)(终点),且其它点出度与入度相同。

求欧拉回路 / 欧拉路径

该代码既能求欧拉回路,也能求欧拉路径。

void euler(int u,int id)
{
    for(int &i=h[u];i;i=nxt[i])
    {
        if(use[i]) continue;
        use[i]=use[i^1]=1;
        euler(to[i],num[i]);
    }
    //id是一条边
}
posted @ 2025-08-04 13:49  邻补角-SSA  阅读(20)  评论(0)    收藏  举报