HDU-1878-欧拉回路

Posted angel-demon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}

 

以上是关于HDU-1878-欧拉回路的主要内容,如果未能解决你的问题,请参考以下文章

hdu1878 欧拉回路(并查集+无向图欧拉回路)

HDU1878 欧拉回路

hdu--1878--欧拉回路(并查集判断连通,欧拉回路模板题)

HDU-1878 判断无向图欧拉回路,水

HDU-1878-欧拉回路

hdu 1878 欧拉回路+并查集