zoukankan      html  css  js  c++  java
  • HDU-1878-欧拉回路(欧拉回路)

    欧拉回路的条件是所有节点的度数为偶数并且是联通图,但是照这题的描述所说并不需要所有点都联通,如果某个点的度为0,被孤立,依旧可能存在欧拉回路;

    所以用set来存度不为0的节点,用并查集判联通就好了

    #include "bits/stdc++.h"
    using namespace std;
    int degree[1005];
    int pre[1005];
    set<int> st;
    int find(int id) {
        if (pre[id] == -1) {
            return id;
        }
        return pre[id] = find(pre[id]);
    }
    int main() {
        int n, m, a, b;
        while (scanf("%d", &n) && n) {
            scanf("%d", &m);
            memset(degree, 0, sizeof(degree));
            memset(pre, -1, sizeof(pre));
            st.clear();
            while (m--) {
                scanf("%d%d", &a, &b);
                st.insert(a);
                st.insert(b);
                if (find(a) != find(b)) {
                    pre[find(a)] = find(b);
                }
                degree[a]++;
                degree[b]++;
            }
            bool flag = true;
            int first = find(*st.begin());
            for (auto i : st) {
                if (degree[i] & 1 || find(i) != first) {
                    flag = false;
                    break;
                }
            }
            puts(flag ? "1" : "0");
        }
        return 0;
    }
  • 相关阅读:
    圣战 [奇环, 树上差分]
    花火之声不闻于耳 [线段树]
    SP2878 KNIGHTS
    P5300 [GXOI/GZOI2019]与或和 [单调栈]
    Speike [线段树, 动态规划]
    Jerry [动态规划]
    JSON对象
    正则书写
    flex布局实践
    数组对象的深拷贝与浅拷贝
  • 原文地址:https://www.cnblogs.com/Angel-Demon/p/10262481.html
Copyright © 2011-2022 走看看