zoukankan      html  css  js  c++  java
  • HDU1878 欧拉回路 判定是否存在欧拉回路

    题义就是在给定的图中判定是否存在欧拉回路。

    图G的一个回路,若它恰通过G中每条边一次,则称该回路为欧拉(Euler)回路。
    具有欧拉回路的图称为欧拉图(简称E图)。

    这里总结下各种图的判定的方法:

    1.无向图中:所给定的图为连通图,且所有节点的度为偶数;
    2.有向图中:所给定的图为连通图,且所有节点的度为零。

    代码如下:

    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #define MAXN 1010
    using namespace std;

    int cnt[MAXN], set[MAXN];

    int find(int x)
    {
    return x == set[x] ? x : set[x] = find(set[x]);
    }

    int main()
    {
    int N, M, x, y, root;
    while (scanf("%d", &N), N)
    {
    int flag = 1, root = 0;
    scanf("%d", &M);
    for (int i = 0; i <= N; ++i)
    set[i] = i;
    memset(cnt, 0, sizeof (cnt));
    while (M--)
    {
    scanf("%d %d", &x, &y);
    int a = find(x), b = find(y);
    if (a != b)
    {
    set[a] =b;
    }
    ++cnt[x], ++cnt[y];
    }
    for (int i = 1; i <= N; ++i)
    {
    if (set[i] == i)
    {
    ++root;
    if (root > 1)
    {
    flag = 0;
    break;
    }
    }
    if (cnt[i] & 1)
    {
    flag = 0;
    break;
    }
    }
    printf(flag ? "1\n" : "0\n");
    }
    return 0;
    }


     

  • 相关阅读:
    响应式设计
    Flex box 弹性盒子布局
    下拉菜单  -
    html使用技巧
    nth-of-type(n)
    Js中 关于top、clientTop、scrollTop、offsetTop
    仿iPhone滑屏操作
    网页超过一页 点击回到顶部
    linux svn使用
    Linux查看CPU和内存使用情况
  • 原文地址:https://www.cnblogs.com/Lyush/p/2389246.html
Copyright © 2011-2022 走看看