hdoj 1878 欧拉回路
来源:互联网 发布:理财记账软件 编辑:程序博客网 时间:2024/05/29 18:25
欧拉回路
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10015 Accepted Submission(s): 3663
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
并查集+欧拉 dfs+欧拉
并查集:
#include<stdio.h>#include<string.h>#define max 1000+10int path[max],set[max];int find(int p){ int child=p; int t; while(p!=set[p]) p=set[p]; while(child!=p) { t=set[child]; set[child]=p; child=t; } return p;}void merge(int x,int y){ int fx=find(x); int fy=find(y); if(fx!=fy) set[fx]=fy;}int main(){ int n,m,i,j,x,y,exist,sum; while(scanf("%d",&n)&&(n!=0)) { for(i=1;i<=n;i++) set[i]=i; scanf("%d",&m); memset(path,0,sizeof(path)); while(m--) { scanf("%d%d",&x,&y); merge(x,y); path[x]++; path[y]++; } exist=0;sum=0; for(i=1;i<=n;i++) { if(set[i]==i) { exist++; if(exist>1) break; } if(path[i]&1) sum++; } if(exist>1) { printf("0\n"); continue; } if(sum==0) printf("1\n"); else printf("0\n"); } return 0;}
dfs:
#include<stdio.h>#include<string.h>#define INF 0x3f3f3f#define max 1000+10int n,m;int path[max],visit[max],map[max][max];void dfs(int x){ int i; visit[x]=1; for(i=1;i<=n;i++) { if(!visit[i]&&map[i][x]) dfs(i); }}int main(){ int i,j,x,y,c,exist,sum; while(scanf("%d",&n)&&(n!=0)) { memset(map,0,sizeof(map)); memset(path,0,sizeof(path)); memset(visit,0,sizeof(visit)); scanf("%d",&m); while(m--) { scanf("%d%d",&x,&y); map[x][y]=map[y][x]=1; path[x]++; path[y]++; } dfs(1); sum=0;exist=1; for(i=1;i<=n;i++) { if(!visit[i]) { exist=0; break; } if(path[i]&1) sum++; } if(!exist) { printf("0\n"); continue; } if(sum==0) printf("1\n"); else printf("0\n"); } return 0;}
0 0
- hdoj 1878 欧拉回路
- HDOJ 1878 欧拉回路
- hdoj 1878 欧拉回路
- HDOJ-1878 欧拉回路
- hdoj-1878-欧拉回路
- hdoj 1878 欧拉回路
- 【欧拉回路】 HDOJ 1878 欧拉回路
- HDOJ 欧拉回路 1878【欧拉回路判定】
- hdoj 1856 欧拉回路
- HDOJ-1878欧拉回路 && 九度OJ-1027欧拉回路
- hdoj--5526--欧拉回路(欧拉回路)
- HDOJ 1811 欧拉回路 (判断欧拉回路)
- (ZJU-2008复试)-HDOJ-1878-欧拉回路
- hdoj 欧拉回路 1878 (并查集)
- HDOJ-----1878并查集+欧拉回路
- HDOJ题目3018 (欧拉回路)
- 【欧拉回路】 HDOJ 3018 Ant Trip
- HDOJ 题目1878欧拉回路(无向图欧拉回路)
- uva1315
- vim折叠
- elasticsearch 使用事项
- WEB 编程学习笔记 - uploadify3.1版本参数使用详解
- sed命令
- hdoj 1878 欧拉回路
- 期权相关
- Android位置服务介绍,并介绍如何通过LocationManager对象获取位置信息
- 论技术的重要性。。。。。
- awk命令
- WSDL生成web service代理类的命令
- linux对多个用户或多个组进行权限管理
- acm2024
- VS2012 +qt