Hdu 1878 欧拉回路[判断是否存在欧拉回路]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878
题目的意思很简单,就是给你一个无向图。。问存在欧拉回路吗?Yes or No。1000个节点。。。
看欧拉回路的定义。。
通过图中所有边一次且仅一次行遍所有顶点是回路,称为欧拉回路。。
具有欧拉回路的图称为欧拉图。。
解这个问题,非常的简单,就需要一个定理就好了。
无向图是欧拉图当且仅当图是连通图且没有奇度顶点。。。
那么,我们就仅仅需要判断这个图的连通性和顶点的度数就好啦。。。
Code:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <cstdio>
using namespace std;const int N = 1e3 + 5;
int n, m, d[N], father[N];
void Init()
{for(int i = 1; i <= n; i ++){father[i] = i; d[i] = 0;}
}int find(int x)
{if(x == father[x]) return x;return father[x] = find(father[x]);
}void Union(int x, int y)
{int a = find(x), b= find(y);if(a != b) father[x] = b;
}bool solve()
{int cnt = 0;for(int i = 1; i <= n; i ++){if(father[i] == i) cnt ++;}if(cnt != 1) return false;for(int i = 1; i <= n; i++){if(d[i] % 2) return false;}return true;
}int main()
{
// freopen("1.txt", "r", stdin);while(scanf("%d", &n) && n){scanf("%d", &m);Init();int x, y;for(int i = 0; i < m; i ++){scanf("%d %d", &x, &y);Union(x, y);d[x] ++; d[y] ++;}if(solve()) puts("1");else puts("0");}return 0;
}
慢慢的来弥补图论上的缺陷吧。。come on!! 加油。。
Hdu 1878 欧拉回路[判断是否存在欧拉回路]相关推荐
- HDU 1878 欧拉回路(入门)
欧拉回路 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- hdu 1878 欧拉回路
欧拉回路 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 混合图的欧拉路径和欧拉回路判断
混合图(既有有向边又有无向边的图)中欧拉环.欧拉路径的判定需要借助网络流!(1)欧拉环的判定: 一开始当然是判断原图的基图是否连通,若不连通则一定不存在欧拉环或欧拉路径(不考虑度数为0的点).其实,难 ...
- 无向图判断是否为欧拉回路(以HDU1878为板子题)
题目传送门 题目 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路? Input 测试输入包含若干测试用例.每个测试用例的第1行给出两个正 ...
- 欧拉回路(简单判断是否有欧拉回路存在)
https://cn.vjudge.net/contest/209173#problem/N 题目大意:给出N个点,M条边,问有没有欧拉回路存在. 题目分析:1.无向图欧拉回路是否连通2.所有点的度为 ...
- HDU 4850 Wow! Such String! 【欧拉回路】【一顿乱构造】
link: http://acm.hdu.edu.cn/showproblem.php?pid=4850 题解: 每个长度为3的字符串当一个节点,每个节点连出26条边,代表给长度为3的字符串吼添加'a ...
- HDU-1878 欧拉回路 判定是否存在欧拉回路
题义就是在给定的图中判定是否存在欧拉回路. 图G的一个回路,若它恰通过G中每条边一次,则称该回路为欧拉(Euler)回路. 具有欧拉回路的图称为欧拉图(简称E图). 这里总结下各种图的判定的方法: 1 ...
- HDU 2012 素数判断方式
复习了一下素数 埃氏筛 线性筛 埃氏筛和线性筛可以优先筛选出素数,从而节省时间哦 线性筛应该挺好理解的 埃氏筛就是i%prime[j] 这里可能不太好理解 可以举几下例子 就会慢慢懂的 举了例子 下次 ...
- Swordsman HDU - 3902(判断轴对称图形)
Swordsman 题目链接:HDU - 3902 题意:按顺时针或逆时针给出多边形的n个顶点,问该多边形是否是一个轴对称图形: 思路:对于奇顶点多边形,其对称轴一定经过某一边的中点和其对边的连线: ...
最新文章
- [置顶] 安卓高手之路之 WindowManager
- c语言数据结构线性表LA和LB,数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合?...
- 本地连接git 服务器方式:以及git连接时报错
- having and group by
- Mac通过wifi连接 Android设备
- myeclipse开发代码颜色搭配保护视力
- vs2005 pro 在浏览器查看下的一个问题!
- 关于零拷贝技术,你了解多少?
- bash 学习笔记2
- 微服务架构下,大型银行数据库应用实践
- 查看linux环境下cudnn是否安装,Linux下安装cuda和对应版本的cudnn
- 【QA】揭开知识库问答KB-QA的面纱1·简介篇
- C语言main函数带参数在VC6下的调试方法
- 阿里云服务器使用https访问项目
- 手把手教你使用Admob广告中介
- 小米2s、2sc解激活锁和root
- 电脑扬声器没有声音,插上耳机也检测不到
- 数据分析师 知识体系 业务篇
- 通用爬取文章及图片导出到Word主程序代码
- PCB设计走线细节讲解(图文结合|强力推荐)