博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-1878 欧拉回路 判定是否存在欧拉回路
阅读量:4556 次
发布时间:2019-06-08

本文共 1187 字,大约阅读时间需要 3 分钟。

题义就是在给定的图中判定是否存在欧拉回路。

图G的一个回路,若它恰通过G中每条边一次,则称该回路为欧拉(Euler)回路。

具有欧拉回路的图称为欧拉图(简称E图)。

这里总结下各种图的判定的方法:

1.无向图中:所给定的图为连通图,且所有节点的度为偶数;

2.有向图中:所给定的图为连通图,且所有节点的度为零。

代码如下:

#include 
#include
#include
#define MAXN 1010 using namespace std; int cnt[MAXN], set[MAXN]; int find(int x) {
return x == set[x] ? x : set[x] = find(set[x]); } int main() {
int N, M, x, y, root; while (scanf("%d", &N), N) { int flag = 1, root = 0; scanf("%d", &M); for (int i = 0; i <= N; ++i) set[i] = i; memset(cnt, 0, sizeof (cnt)); while (M--) {
scanf("%d %d", &x, &y); int a = find(x), b = find(y); if (a != b) {
set[a] =b; } ++cnt[x], ++cnt[y]; } for (int i = 1; i <= N; ++i) {
if (set[i] == i) { ++root; if (root > 1) {
flag = 0; break; } } if (cnt[i] & 1) {
flag = 0; break; } } printf(flag ? "1\n" : "0\n"); } return 0; }

 

转载于:https://www.cnblogs.com/Lyush/archive/2012/03/10/2389246.html

你可能感兴趣的文章
【转】大话模拟退火
查看>>
windows 2012 r2企业版没有界面
查看>>
Listview静态和动态加载显示
查看>>
在Struts2的Action中获得request response session几种方法
查看>>
bzoj4668 冷战
查看>>
git入门篇shell
查看>>
附录A培训实习生-面向对象基础方法重载(3)
查看>>
assert_param函数的用法
查看>>
ASP.NET MVC项目里创建一个aspx视图
查看>>
java 输入一个字符串,打印出该字符串中字符的所有排列
查看>>
C语言博客作业-结构体
查看>>
累死人之希尔加密
查看>>
JAVA基础篇—基本数据类型
查看>>
Python基本语法一
查看>>
php字符串倒序显示
查看>>
scrapy中XMLFeedSpider
查看>>
堆排序
查看>>
北京车展现身价过亿车模,齐P小钻裙惊艳全场
查看>>
【转载】Myeclipse中实现js的提示
查看>>
JXL读取Excel文件内容
查看>>