hdu 1878 欧拉回路
2016-04-20 20:58
363 查看
题目链接
题意:欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
欧拉回路每个顶点的度为偶数,统计度的奇偶即可。用并查集判断连通性。
题意:欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
欧拉回路每个顶点的度为偶数,统计度的奇偶即可。用并查集判断连通性。
#include <iostream> #include<cstdio> #include<cstring> #include<cmath> #define N 1100 using namespace std; int num ,pre ; int findset(int v) { int t1,t2=v; while(v!=pre[v]) v=pre[v]; while(pre[t2]!=v) { t1=pre[t2]; pre[t2]=v; t2=t1; } return v; } void unions(int u,int v) { int t1=findset(u); int t2=findset(v); if(t1!=t2) pre[t1]=t2; } int main() { int n,m; while(~scanf("%d",&n)&&n) { cin>>m; for(int i=1;i<=n;i++) pre[i]=i; memset(num,0,sizeof(num)); for(int i=0;i<m;i++) { int u,v; scanf("%d%d",&u,&v); num[u]++; num[v]++; unions(u,v); } int flag=1,sum=0; for(int i=1;i<=n;i++) { if(num[i]%2) flag=0; if(pre[i]==i) sum++; } if(sum>1) flag=0; cout<<flag<<endl; } }
相关文章推荐
- POJ 3735 Training little cats(矩阵快速幂)
- LeetCode *** 131. Palindrome Partitioning
- android串口操作
- Oracle-SQL04
- POJ 3735 Training little cats(矩阵快速幂)
- CentOS 7.1安装Elasticsearch和Storm
- 私营太空,如何在宇宙中圈地?
- [bzoj4542][HNOI2016]大数
- POJ 2983 查分约束+SPFA
- sqlite线程模式
- 连连看(bfs ,优先队列搜索)
- 【一】——C++模板
- URI和URL的区别
- SpringMVC中文乱码总结
- sql rank()函数
- 从无到有:软件项目过程敏捷实践
- Linux内核编程实验二
- nodejs 里面执行 es6 的语法语句
- TCP协议Nagle算法和Delayed ACK相互影响实例分析
- JNI层AttachCurrentThread与DetachCurrentThread