【HDU-1878】 欧拉回路
来源:互联网 发布:excel同一列重复数据 编辑:程序博客网 时间:2024/06/14 14:51
点击打开链接
欧拉回路
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15220 Accepted Submission(s): 5820
Problem Description
欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
Input
测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结
束。
束。
Output
每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。
Sample Input
3 31 21 32 33 21 22 30
Sample Output
10
// 无向图:
// 1 ) 设G是连通无向图,则称经过G的每条边一次并且仅一次的路径为欧拉通路; 2 ) 如果欧拉通路是回路,则称此回路为欧拉回路; 3 ) 具有欧拉回路的无向图G称为欧拉图。
// 有向图:
// 1 ) 设D是有向图,D的基图连通,则称经过D的每条边一次并且仅一次的有向路径为有向欧拉通路; 2 ) 如果有向欧拉通路是有向回路,则称此有向回路为有向欧拉回路; 3 ) 具有有向欧拉回路的有向图D称为有向欧拉图。
//代码如下:
#include <cstdio>#include <cstring>const int maxn = 1e6 + 10;int n,m;int par[maxn];int du[maxn];int k;void init(int n){memset(du,false,sizeof(du));for (int i = 1 ; i <= n ; i++) par[i] = i;}int find(int x){int p = x;while (x != par[x]) { x = par[x]; }while(p != x) { int j = par[x]; par[x] = x; p = j; }return x;}void unite(int x,int y){int fa = find(x);int fb = find(y);if ( fa != fb) { par[fa] = fb; k++; }}int main(){ while (~scanf("%d",&n) && n) { int a,b; init(n); scanf("%d",&m); k = 0; for (int i = 0 ; i < m ; i++) { scanf ("%d%d",&a,&b); du[a]++; du[b]++; unite(a,b); }if (k != n - 1) { printf ("0\n"); continue; }int flag = 1;for (int i = 0 ; i < n ; i++) { if (du[i] % 2 != 0) { flag = 0; break; } }if (flag){printf ("1\n");} else printf("0\n"); }return 0;}
阅读全文
0 0
- HDU 1878 欧拉回路
- hdu 1878 欧拉回路
- 【欧拉回路】hdu 1878
- hdu 1878 欧拉回路
- HDU 1878 欧拉回路
- hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- HDU-1878-欧拉回路
- Hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- HDU 1878 欧拉回路
- hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- HDU-1878 欧拉回路
- HDU 1878 欧拉回路
- iOS开发多线程介绍
- cmd命令行
- springboot+Junit测试rest接口,报错显示url无法连接
- ECharts 多个折线图动态获取json数据
- LeetCode 34. Search for a Range (Python)
- 【HDU-1878】 欧拉回路
- Android textview文字两端对齐,中间空白
- 详述undefined和null的区别
- linux c下目录文件的操作(opendir,readdir,closedir)
- 安卓简化版圆形图片控件CircleImageView
- [RK3288][Android6.0] 不同分辨率的bootanimation.zip下载
- C++用libcurl库进行http通讯网络编程
- 处理BigDecimal空指针异常
- UEFI下双硬盘安装Windows10+Ubuntu双系统_1