Problem Description

欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?

Input

测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结
束。

Output

每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。

Sample Input

3 3
1 2
1 3
2 3
3 2
1 2
2 3
0

Sample Output

1
0

思路:使用并查集统计各节点度数即可,若图连通且所有点的度数为偶数,则说明该无向图存在欧拉回路

Source Program

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<set>
#include<map>
#include<stack>
#include<ctime>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 1001
#define MOD 16007
#define E 1e-6
#define LL long long
using namespace std;
int n,m;
int degree[N];
int father[N];
int Find(int x){if(father[x]==-1)return x;return father[x]=Find(father[x]);
}
void Union(int x,int y){x=Find(x);y=Find(y);if(x!=y)father[x]=y;
}
int main(){while(scanf("%d%d",&n,&m)!=EOF){memset(degree,0,sizeof(degree));memset(father,-1,sizeof(father));for(int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);degree[x]++;degree[y]++;Union(x,y);}int cnt=0;//记录连通分量for(int i=1;i<=n;i++)if(Find(i)==i)cnt++;if(cnt!=1)//若cnt大于1,说明图不连通printf("0\n");else{int num=0;//统计度数为奇数的点for(int i=1;i<=n;i++)if(degree[i]&1)num++;if(num==0)printf("1\n");elseprintf("0\n");}}return 0;
}

欧拉回路(HDU-1878)相关推荐

  1. Hdu 1878 欧拉回路[判断是否存在欧拉回路]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878 题目的意思很简单,就是给你一个无向图..问存在欧拉回路吗?Yes or No.1000个节点.. ...

  2. hdu 1878 欧拉回路

    欧拉回路 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  3. HDU 1878 欧拉回路(入门)

    欧拉回路 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. 蓝书3.7 欧拉回路

    T1 欧拉回路 hdu 1878 题目大意: 判断是否存在欧拉回路 思路: 一个无向图存在欧拉回路的条件为所有点的度为偶数 且图联通 1 #include<iostream> 2 #inc ...

  5. uoj 117 欧拉回路

    1.判断是否为欧拉存在欧拉回路---裸的判断 欧拉回路就是看一笔能不能把途中所有的边跑完没得重复 对于无向边----建立双向边判断每个点的入度是否为2的倍数   1.1 对于有向边---建立单向边判断 ...

  6. 大一下第四周学习笔记

    周一 3.22(杂题) Hongcow Builds A Nation (并查集 + 思维) 其实这道题并不难 只是在比赛中为了快点做出,乱猜是贪心,然后思路错误浪费了大量时间,依然WA 所以比赛中静 ...

  7. hdu 4850 字符串构造---欧拉回路构造序列 递归+非递归实现

    http://acm.hdu.edu.cn/showproblem.php? pid=4850 题意:构造长度为n的字符序列.使得>=4的子串仅仅出现一次 事实上最长仅仅能构造出来26^4+4- ...

  8. hdu 3018 图 欧拉回路 并查集

    http://acm.hdu.edu.cn/showproblem.php?pid=3018 题意  --许多蚂蚁 遍历一个图 每一条边只能走一次  问至少要把这些蚂蚁分为几群 说白了就是 至少几笔可 ...

  9. HDU 4850 Wow! Such String! 【欧拉回路】【一顿乱构造】

    link: http://acm.hdu.edu.cn/showproblem.php?pid=4850 题解: 每个长度为3的字符串当一个节点,每个节点连出26条边,代表给长度为3的字符串吼添加'a ...

  10. hdu 1116 欧拉回路 并查集 一组字符串能否首尾相连成一个字符串

    主要是欧拉回路的基础知识,用并查集加工处理 注意欧拉回路和并查集的细节判断 不能粘贴复制,一定要理解之后再敲一遍代码,否则浪费更多的时间 #include <stdio.h> #inclu ...

最新文章

  1. 欢迎加入北京智源AI社群
  2. 内存分配策略(二):JMM,Java Memory Model
  3. python3 获取当前路径_如何使用python3获取当前路径及os.path.dirname的使用
  4. 1月12日,HTML学习笔记2
  5. 聊聊storm的IWaitStrategy
  6. Hyper-V之02 虚拟机复制与故障转移
  7. Linux Shell脚本编程--cut命令
  8. 上海图书馆 计算机软件,上海图书馆上海科技情报研究所招聘信息
  9. Ajax updatepanel用法
  10. 什么是高并发,如何避免高并发
  11. mysql string types ---- mysql 字符类型详解
  12. java 静态方法 构造方法,Java构造函数和静态方法
  13. oracle数据库同步异步优劣点,ORACLE数据库异步IO介绍
  14. pythoninit作用_简介Python中的__init__的作用
  15. python pytz下载_python:pytz包安装问题:ImportError:没有名为pytz的模块
  16. 根据银行卡号查询银行名接口
  17. Windows7压缩文件到最小的方法
  18. led大屏按实际尺寸设计画面_微间距LED大屏幕拼接显示系统设计方案
  19. mtk使用android开关机动画,android MTK修改开关机动画
  20. Esxi5.5添加4T报错的问题

热门文章

  1. 现在的00后都这么牛X的吗?
  2. 为什么 0.1 + 0.2 = 0.300000004
  3. 支撑百万级并发,Netty如何实现高性能内存管理
  4. 中台不火,天理难容!
  5. 手哥架构宝典系列:支付系统2.0架构演进
  6. mysql索引类型normal,unique,full text
  7. 【技术文档】JEECG 页面字典控件与Popup使用
  8. 【jeecg Docker安装】使用 Docker 搭建 Java Web 运行环境
  9. Eclipse4.2界面难看,启动速度,修改方法
  10. 如何将maven项目打包成可执行的jar