hdu 1878 欧拉回路(无向图)
来源:互联网 发布:zz的网络意思 编辑:程序博客网 时间:2024/06/05 01:05
欧拉回路
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 13509 Accepted Submission(s): 5050
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
【分析】
裸判断欧拉回路
用并查集判连通块
【代码】
//hdu 1878 无向图欧拉回路 #include<iostream>#include<cstdio>#include<cstring>#define M(a) memset(a,0,sizeof a)#define fo(i,j,k) for(i=j;i<=k;i++)using namespace std; const int mxn=1000;int du[mxn],father[mxn];inline int find(int x){ if(x!=father[x]) father[x]=find(father[x]); return father[x];}inline void Union(int u,int v){ int t1=find(u),t2=find(v); if(t1!=t2) father[t1]=father[t2];}int main(){ int i,j,n,m,u,v; while(scanf("%d",&n) && n) { scanf("%d",&m); bool flag=0; M(du); fo(i,1,n) father[i]=i; while(m--) { scanf("%d%d",&u,&v); du[u]++,du[v]++; Union(u,v); } fo(i,1,n) father[i]=find(i); fo(i,1,n) if(father[i]!=father[1]) {flag=1;break;} fo(i,1,n) if(du[i]&1) { flag=1; break; } if(flag) printf("0\n"); else printf("1\n"); } return 0;}
0 0
- 杭电hdu 1878 欧拉回路 无向图
- hdu 1878 欧拉回路 无向图连通性
- hdu 1878 无向图的欧拉回路
- hdu 1878 欧拉回路(无向图)
- 【欧拉回路(无向图判定)】hdu 1878 欧拉回路
- HDU 1878 无向图的欧拉回路的判断
- 无向图的欧拉回路线性时间算法
- HDU1878无向图判断欧拉回路
- POJ 1041 无向图的欧拉回路
- Uva10054 无向图打印任意欧拉回路
- hdu1878 欧拉回路(无向图+并查集)
- 数据结构实验之图论八:欧拉回路 无向图的欧拉回路判断
- 有向图,无向图的欧拉回路和欧拉通路poj 2337
- HDOJ 1878 - 欧拉回路 判断无向图是否是欧拉图...
- HDOJ 题目1878欧拉回路(无向图欧拉回路)
- HDOJ 1878 欧拉回路(判定无向图欧拉回路简单题)
- 无向图的欧拉回路和欧拉通路
- HDU 1878 无向图判欧拉回路
- Google浏览器如何离线查看Android文档
- leetcode---House Robber---动规
- 函数可变形参整理:vsprintf和vs_list详解
- Linux帮助命令
- PHP的语法学习
- hdu 1878 欧拉回路(无向图)
- 要求设置一绝对地址为0x67a9的整型变量的值为0xaa55。
- NOIp模拟 电缆建设
- 使用Struts2(一)搭建环境(struts2.3.31)
- 关于在ViewPager中添加Fragment的问题
- malloc和new的区别是摘要
- luogu【P1025】数的划分
- 存储引擎的选择和索引的创建
- 一个webapp应用中配置多个spring容器好吗?