zoukankan      html  css  js  c++  java
  • 图论 欧拉回路

    HDU 1878

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #include<string>
    #include<cstring>
    #include<map>
    #include<stack>
    #include<set>
    #include<queue>
    using namespace std;
    typedef long long  ll;
    #define me(x) memset(x, -1, sizeof(x))
    #define mem(x) memset(x, 0, sizeof(x))
    const int MOD = 1e18;
    const int N = 2e5 + 5;
    ll n, m;
    struct node
    {
        int u, v;
    }ed[N];
    
    int id, vis[N], p[N], dep[N];
    void add(int u, int v)
    {
        ed[id].u=u;
        ed[id].v=v;
        id++;
    }
    void ini()
    {
        id=0;
        mem(vis);
        mem(dep);
        for(int i=1; i<=n; i++)
            p[i]=i;
    }
    
    int Find(ll x)
    {
        int r=x;
        while(r!=p[r])
            r=p[r];
        int i=x, t;
        while(r!=p[i])
        {
            t=p[i];
            p[i]=r;
            i=t;
        }
        return r;
    }
    void join()
    {
        for(int i=0; i<id; i++)
        {
            int x=Find(ed[i].u), y=Find(ed[i].v);
            if(x!=y)
                p[x]=y;
        }
    }
    
    int main()
    {
        int i, j, k, x, l;
        int u, v, t;
        while(~scanf("%d", &n))
        {
            if(!n) return 0;
            scanf("%d", &m);
            ini();
            for(i=0; i<m; i++)
            {
                scanf("%d%d", &u, &v);
                add(u,v); add(v,u);
                dep[u]++, dep[v]++;
            }
            join();
            k=-1;
            for(i=1; i<=n; i++)
            {
                k=Find(i);
                if(!i) m=k;
                else if(k!=m) break;
            }
            if(i<n) {cout<<0<<endl;continue;}
            k=0;
            for(i=1; i<=n; i++)
            {
                if(dep[i]%2) {k=1;break;}
            }
            if(!k)cout<<1<<endl;
            else cout<<0<<endl;
        }
        return 0;
    }
  • 相关阅读:
    MMU讲解
    MiniCRT 64位 linux 系统移植记录:64位gcc的几点注意
    gprof使用介绍
    SQLite在多线程环境下的应用
    C++ Boost库简介
    GDB调试手册[转]
    data-ng-show 指令
    AngularJS THML DOM
    AngularJS 表格
    AngularJS XMLHttpRequest
  • 原文地址:https://www.cnblogs.com/op-z/p/11283538.html
Copyright © 2011-2022 走看看