欧拉回路

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10544    Accepted Submission(s): 3845

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
 
Author
ZJU
 
Source
 
Recommend
We have carefully selected several similar problems for you:  1877 1881 1863 1875 1864
 
 
 
 
 
 
附:
 
ps赤裸裸的欧拉回路,下面两个没有注视是我写的,没有注视,可以作为模板,带有注视的是网上的,便于理解
 
 
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=;
int map[maxn][maxn];
bool vis[maxn];
int indegree[maxn],father[maxn];
int n,m;
void init(){
for(int i=;i<=n;i++)
father[i]=i;
}
int find(int u){
if(father[u]!=u)
father[u]=find(father[u]);
return father[u];
}
void Union(int x,int y){
int t1=find(x);
int t2=find(y);
if(t1!=t2)
father[t1]=t2;
}
int main(){ while(scanf("%d",&n)&&n){
init();
memset(map,,sizeof(map));
memset(indegree,,sizeof(indegree));
memset(vis,false,sizeof(vis));
scanf("%d",&m);
for(int i=;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
map[u][v]=map[v][u]=;
Union(u,v);
indegree[u]++;
indegree[v]++;
}
bool flag=false;
int sum=;
for(int i=;i<=n;i++){
if(father[i]==i){
sum++;
}
if(indegree[i]%==){
flag=true;
break;
}
} if(flag==true||sum!=)
printf("0\n");
else
printf("1\n"); }
return ;
}
 
    感谢大神
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=;
int map[maxn][maxn];
bool vis[maxn];
int indegree[maxn];
int n,m;
void dfs(int u){
vis[u]=true;
for(int i=;i<=n;i++)
if(!vis[i]&&map[u][i])
dfs(i);
return ;
}
int main(){
while(scanf("%d",&n)&&n){
scanf("%d",&m);
memset(map,,sizeof(map));
memset(vis,false,sizeof(vis));
memset(indegree,,sizeof(indegree));
for(int i=;i<m;i++){
int u,v;
scanf("%d%d",&u,&v);
indegree[u]++;
indegree[v]++;
map[u][v]=map[v][u]=;
} dfs();
int i;
for( i=;i<=n;i++){
if(!vis[i]||indegree[i]%==)
break;
}
if(i>n)
printf("1\n");
else
printf("0\n");
}
return ;
}
//本题主要考察欧拉回路的两个充要条件:1.联通图 2.顶点度数都为偶数 (两个条件缺一不可)

#include<stdio.h>
#include<string.h> int graph[][]; //采用邻接矩阵存储图
int visit[]; //在遍历时标记该点是否被访问过
int degree[]; //存储节点的度 void DFS(int v, int n) { //深度优先遍历,递归
visit[v] = ;
for(int i=; i<=n; i++)
if(graph[v][i] && visit[i]==)
DFS(i,n);
} int main() {
//freopen("in.txt","r",stdin);
int n, m;
while(scanf("%d %d",&n,&m)!=EOF && n) {
memset(graph,,sizeof(graph)); //清零
memset(visit,,sizeof(visit));
memset(degree,,sizeof(degree));
int a, b, i;
int flag = ; //标记是否存在欧拉回路
for(i=; i<m; i++) {
scanf("%d %d",&a,&b);
graph[a][b] = graph[b][a] = ; //"1"表示两点属于邻接关系
degree[a]++; degree[b]++;
}
DFS(,n);
for(i=; i<=n; i++) {
if(visit[i] == ) {
flag = ; //若有点未曾被访问,即一次深度遍历有未访问的点,则不存在欧拉回路
break;
}
if(degree[i] % != ) {
flag = ; //若有点的度不是偶数,则不存在欧拉回路
break;
}
}
if(flag)
printf("1\n");
else
printf("0\n");
} return ;
}

欧拉回路基础 HDU1878 欧拉回路||并差集的更多相关文章

  1. HDU1878 欧拉回路 - from lanshui_Yang

    Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路?   Input 测试输入包含若干测试用例.每个 ...

  2. HDU-1878 欧拉回路 欧拉回路

    题目链接:https://cn.vjudge.net/problem/HDU-1878 题意 中文题,而且就是单纯的欧拉回路 思路 判断连通图 用并查集会很好,bfs亦可 一时脑抽用bfs过了这个题, ...

  3. hdu1878 欧拉回路

    //Accepted 1240 KB 250 ms //水题 欧拉回路 //连通+节点度均为偶数 #include <cstdio> #include <cstring> #i ...

  4. uva 10054 The Necklace 拼项链 欧拉回路基础应用

    昨天做了道水题,今天这题是比较水的应用. 给出n个项链的珠子,珠子的两端有两种颜色,项链上相邻的珠子要颜色匹配,判断能不能拼凑成一天项链. 是挺水的,但是一开始我把整个项链看成一个点,然后用dfs去找 ...

  5. Uva 10596 - Morning Walk 欧拉回路基础水题 并查集实现

    题目给出图,要求判断不能一遍走完所有边,也就是无向图,题目分类是分欧拉回路,但其实只要判断度数就行了. 一开始以为只要判断度数就可以了,交了一发WA了.听别人说要先判断是否是联通图,于是用并查集并一起 ...

  6. HDU1878 欧拉回路---(并查集+图论性质)

    http://acm.hdu.edu.cn/showproblem.php?pid=1878 欧拉回路 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  7. hdu1878欧拉回路(DFS+欧拉回路)

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

  8. POJ 1300 最基础的欧拉回路问题

    题目大意: 从0~n-1编号的房间,从一个起点开始最后到达0号房间,每经过一扇门就关上,问最后能否通过所有门且到达0号房间 我觉得这道题的输入输出格式是我第一次遇到,所以在sscanf上也看了很久 每 ...

  9. HDU-1878 欧拉回路(并查集,欧拉回路性质)

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

随机推荐

  1. 远程链接mongoDB robomongo

    墙裂推荐一个软件robomongo 下载地址:https://robomongo.org/download 最初不用这个软件的时候需要shell链接mongoDB,折腾了半天结果版本不匹配 用robo ...

  2. Exceptions and Errors on iOS

    异常:程序缺陷导致:不可恢复:给开发者使用: 错误:资源受限导致:可恢复:提示给用户. https://blog.jayway.com/2010/10/13/exceptions-and-errors ...

  3. 简析平衡树(三)——浅谈Splay

    前言 原本以为\(Treap\)已经很难了,学习了\(Splay\),我才知道,没有最难,只有更难.(强烈建议先去学一学\(Treap\)再来看这篇博客) 简介 \(Splay\)是平衡树中的一种,除 ...

  4. C的xml编程-libxml2

    这里主要讲述libxml2在linux下的使用. (以下内容除了linux下的安装步骤是自己写的,其余均出自http://www.blogjava.net/wxb_nudt/archive/2007/ ...

  5. iOS 控制section不悬停 --- iOS开发系列 ---项目中成长的知识八

    一般情况下,tableview中的section是会默认不随着tableview的滚动而滚动的,而是会等到属于这个section的cell滑完过后,然后往上顶(不知道大家能不能听懂=_=!) 有些时候 ...

  6. HTML <input> 标签如何屏蔽浏览器的自动填写?

    autocomplete = "off",实测无效. <input type="text" autocomplete = "off"/ ...

  7. react的ant design的UI组件库

    PC官网:https://ant.design/ 移动端网址:https://mobile.ant.design/docs/react/introduce-cn antd-mobile :是 Ant ...

  8. 3.Cisco Packet Tracer中关于交换机端口安全的设置

    本次实验将在这幅拓扑图的基础上完成 我们会对pc0在交换机上进行mac地址绑定,pc1访问时则交换机断开端口 1.为pc机配置ip地址 pc0:192.168.1.1 pc1:192.168.1.2 ...

  9. 最新手机号正则表达式php包括166等号段

    if(!preg_match("/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147)) ...

  10. vue layui

    关于 vue中使用layui插件,个人一些小小的心得. 我是全局的引入,在static文件夹里存放layui的完整代码 在index页面中标签引入 <link rel="stylesh ...