hdoj 1878 欧拉回路(无向图欧拉回路+并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878
思路分析:该问题给定一个无向图,要求判断该无向图是否存在欧拉回路;无向图判断存在欧拉回路的两个必要条件:该无向图为连通图且所有的结点的度数为偶数;
代码如下:
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; const int MAX_N = + ;
int fa[MAX_N];
int link[MAX_N]; void Init()
{
for (int i = ; i < MAX_N; ++i)
{
fa[i] = i;
link[i] = ;
}
} int Find(int a)
{
if (fa[a] == a)
return a;
else
return fa[a] = Find(fa[a]);
} int Union(int a, int b)
{
int fa_a = Find(a);
int fa_b = Find(b); if (fa_a == fa_b)
return -;
if (fa_a > fa_b)
fa[fa_b] = fa_a;
else
fa[fa_a] = fa_b;
return ;
} int main()
{
int ver_num, road_num;
int ver_1, ver_2; while (scanf("%d", &ver_num) != EOF && ver_num)
{
scanf("%d", &road_num);
Init();
for (int i = ; i < road_num; ++i)
{
scanf("%d %d", &ver_1, &ver_2);
link[ver_1]++;
link[ver_2]++;
Union(ver_1, ver_2);
}
int set_count = ;
bool ok = true;
for (int i = ; i <= ver_num; ++i)
{
if (fa[i] == i)
set_count++;
if ((link[i] & ) != || set_count > )
ok = false;
if (!ok)
break;
}
if (ok)
printf("1\n");
else
printf("0\n");
}
return ;
}
hdoj 1878 欧拉回路(无向图欧拉回路+并查集)的更多相关文章
- hdoj 2473 Junk-Mail Filter【并查集节点的删除】
Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- hdu 1878 欧拉回路(联通<并查集> + 偶数点)
欧拉回路Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- POJ 2513 Colored Sticks (欧拉回路 + 字典树 +并查集)
Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 27097 Accepted: 7175 ...
- hdoj 3478 Catch(二分图判定+并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3478 思路分析:该问题需要求是否存在某一个时刻,thief可能存在图中没一个点:将该问题转换为图论问题 ...
- hdoj 4786 Fibonacci Tree【并查集+最小生成树(kruskal算法)】
Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- hdoj 3635 Dragon Balls【并查集求节点转移次数+节点数+某点根节点】
Dragon Balls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- UVa 10054 The Necklace(无向图欧拉回路)
My little sister had a beautiful necklace made of colorful beads. Two successive beads in the neckla ...
- HDU 4514并查集判环+最长路
点击打开链接 题意:中文题...... 思路:先推断是否能成环,之前以为是有向图,就用了spfa推断,果断过不了自己出的例子,发现是无向图.并查集把,两个点有公共的父节点,那就是成环了,之后便是求最长 ...
- POJ 2513 Colored Sticks(欧拉回路,字典树,并查集)
题意:给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的. 无向图存在欧拉路的充要条件为: ① 图是连通的: ② 所有节 ...
随机推荐
- js 中的闭包
/** *闭包就是在一个函数的外面访问函数内部的变量 **/ var name = "xiao A"; var obj = { name : "xiao B" ...
- oracle基础代码使用
create or replace procedure pr_test1 is v_case ) :;--定义变量 begin -- /*判断语句 then dbms_output.put_line( ...
- const和readonly你真的懂吗?
第二遍文章我打算把const和readonly的区别拿出来讲下,因为写代码这么久我都还没搞清楚这两者的区别,实在有点惭愧,所以这一次我打算搞清楚它. 定义 来看看MSDN的解释: readonly:r ...
- 教你看懂C++类库函数定义之三---_stdcall
一切从一个C++ 类库头文件开始,现在在做一个C++的项目,期间用到一个开源的界面库DUILib(类似MFC),这个东西还不错能很容易的写出漂亮的界面,比如QQ的界面,可以去下载下来研究研究,地址:h ...
- SQL SERVER表不能修改表结构的处理方法
SQL SERVER表提示不能修改表结构,这究竟是什么原因呢?下面就为您介绍处理该问题的方法,如果您在SQL SERVER表修改方面遇到过问题,不妨一看. 新装的SQL SERVER 2008,打开原 ...
- 基于mini2440的看门狗(裸机)
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生 ...
- iOS中Block介绍(一)基础
ios开发block的使用指南,以及深入理解block的内存管理,也适用于osx开发.讨论范围:block的使用,内存管理,内部实现.不包含的内容:gc arc下的block内存,block在c++中 ...
- Android设置Activity背景为透明style
方法一: 通过Theme.Translucent @android:style/Theme.Translucent @android:style/Theme.Translucent.NoTitleBa ...
- Product(大数相乘)
Description The problem is to multiply two integers X, Y. (0<=X,Y<10250) Input The input will ...
- Spring Annotation vs XML - 示例
来源: http://hanqunfeng.iteye.com/blog/2113820 作者hanqunfeng的示例文件: (可下载) web-mvc.zip