当前位置: 首页 > news >正文

HDU1878 欧拉回路

问题链接:HDU1878 欧拉回路

问题简述:输入若干测试用例,判定一个无向图是否有欧拉回路。

问题分析:无向图的欧拉回路需要满足两个条件,一是图是连通的,二是各个结点的入出度相同(有偶数个连接的边)。

程序说明:程序中用并查集判定图是否连通,对图构造一个并查集(树)后,如果连通则其根相同。用数组degree[]统计各个结点的连通度。

AC的C++语言程序如下:

/* HDU1878 欧拉回路 */

#include <iostream>
#include <cstring>
#include <vector>

using namespace std;

// 并查集类
class UF {
private:
    vector<int> v;
public:
    UF(int n) {
        for(int i=0; i<=n; i++)
            v.push_back(i);
    }

    int Find(int x) {
        for(;;) {
            if(v[x] != x)
                x = v[x];
            else
                return x;
        }
    }

    bool Union(int x, int y) {
        x = Find(x);
        y = Find(y);
        if(x == y)
            return false;
        else {
            v[x] = y;
            return true;
        }
    }
};

const int MAXN = 1000;

int degree[MAXN+1];

int main()
{
    int n, m, src, dest;

    while(cin >> n && n != 0) {
        UF uf(n);

        cin >> m;

        // 变量初始化
        memset(degree, 0, sizeof(degree));

        // 统计各个结点的联通度,并构建并查集(为判定图是否为连通图)
        while(m--) {
            cin >> src >> dest;

            degree[src]++;
            degree[dest]++;

            if(uf.Find(src) != uf.Find(dest))
                uf.Union(src, dest);
        }

        // 判定
        int root = uf.Find(1), ans = 1;
        for(int i=1; i<=n; i++)
            if(uf.Find(i) != root || degree[i] & 1 /*degree[i] % 2 == 1*/) {
                ans = 0;
                break;
            }

        // 输出结果
        cout << ans << endl;
    }

    return 0;
}


转载于:https://www.cnblogs.com/tigerisland/p/7564127.html

相关文章:

  • 【整理】微信小程序开发须知
  • Unity Remote 5 使用
  • puppet自动化技术基础分析及实例部署详解
  • DSOframer的简单介绍和资源整理
  • swift开发多线程篇 - 多线程基础
  • 杭电2003——求绝对值
  • 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)...
  • linux 性能篇 -- ps的用法
  • Linux命令篇之du命令和read命令
  • Skynet 小试Debug_console...
  • 大数据~说说Hadoop
  • oracle获取clob调优
  • maven的setting.xml配置,解决maven下载速度过慢
  • java中的String类常量池详解
  • 从0移植uboot (二) _uboot启动流程分析
  • es的写入过程
  • export和import的用法总结
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript中的对象个人分享
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • mysql 数据库四种事务隔离级别
  • MySQL的数据类型
  • Promise面试题,控制异步流程
  • python学习笔记-类对象的信息
  • session共享问题解决方案
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 普通函数和构造函数的区别
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 使用权重正则化较少模型过拟合
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 第二十章:异步和文件I/O.(二十三)
  • ​io --- 处理流的核心工具​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • $.each()与$(selector).each()
  • (第27天)Oracle 数据泵转换分区表
  • (三)docker:Dockerfile构建容器运行jar包
  • (一)Dubbo快速入门、介绍、使用
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)大型网站的系统架构
  • **PHP二维数组遍历时同时赋值
  • .“空心村”成因分析及解决对策122344
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Standard 的管理策略
  • .NET 依赖注入和配置系统
  • .NET 中 GetProcess 相关方法的性能
  • .NET文档生成工具ADB使用图文教程
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @SuppressWarnings注解
  • [ SNOI 2013 ] Quare
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell