欧拉图

    xiaoxiao2025-11-12  7

    定义:

    通过图(无向图或有向图)中所有边且每边仅通过一次通路称为欧拉通路,相应的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Euler Graph),具有欧拉通路而无欧拉回路的图称为半欧拉图。

    定理:

    无向连通图G是欧拉图,当且仅当G不含奇数度结点(G的所有结点度数为偶数); 连通所有结点度数为偶数无向连通图G含有欧拉通路,当且仅当G有零个或两个奇数度的结点; 连通奇数度的节点有 0 个或 2 个,其余都为偶数有向连通图D是欧拉图,当且仅当该图为连通图且D中每个结点的入度=出度 忽略边的方向后连通所有结点度数为偶数有向连通图D含有欧拉通路,当且仅当该图为连通图且D中除两个结点外,其余每个结点的入度=出度,且此两点满足deg-(u)-deg+(v)=±1。(起始点s的入度=出度-1,结束点t的出度=入度-1 或两个点的入度=出度) 忽略边的方向后连通起始点:入度 = 出度 - 1;结束点:入度 = 出度 + 1除起始点和结束点外,剩余结点的度数为偶数

    题目:

    有向欧拉通路:UVA - 10129 Play on Words 无向欧拉回路:UVA - 10054 The Necklace 有向欧拉回路:UVA - 10596 Morning Walk

    欧拉图打印:

    //用于无向图 void euler (int u) { for (int v = 0; v < n; v++) if (G[u][v] && !vis[u][v]) { vis[u][v] = vis[v][u] = 1; euler(v); printf("%d %d\n", u, v);//输出逆序 } } //用于有向图时,把 vis[u][v] = vis[v][u] = 1 改成 vis[u][v]
    转载请注明原文地址: https://ju.6miu.com/read-1304111.html
    最新回复(0)