HDU
来源:互联网 发布:sql注入绕过过滤 编辑:程序博客网 时间:2024/06/11 15:27
点击打开题目链接
欧拉回路
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14578 Accepted Submission(s): 5522
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
Author
ZJU
Source
浙大计算机研究生复试上机考试-2008年
Recommend
We have carefully selected several similar problems for you: 1880 1877 1881 1864 1874
基础欧拉回路题。
无向图:
判断欧拉回路即判断任何节点度是否为偶数。
判断欧拉通路即判断除去起点终点度为奇数,其余节点度为偶数
有向图:
判断欧拉回路即判断任何节点是否入度等于出度。
判断欧拉通路即判断除去起点出度比入度大1和终点入度比出度大1外,其余节点度入度是否等于出度。
思路:因为本题为无向图,所以只需要用一个in数组存各点的度,然后首先用并查集判断图是否连通,然后判断每个点度是否为偶数即可。
附上AC代码:
#include<iostream>#include<cstring>using namespace std;const int maxn=1000+5;int par[maxn],in[maxn];int a,b;int N,M;void init(){ for(int i=0;i<=N;i++) par[i]=i; memset(in,0,sizeof(in));}int find(int a){ if(a==par[a])return a; return par[a]=find(par[a]);}void unite(int a,int b){ a=find(a); b=find(b); if(a==b)return ; else if(a>b) par[a]=b; else par[b]=a;}int main(){ ios::sync_with_stdio(false); while(cin>>N,N) { init(); cin>>M; for(int i=0;i<M;i++) { cin>>a>>b; unite(a,b); in[a]++;in[b]++; } int temp=find(1),flag=1;; for(int i=1;i<=N;i++) { if(temp!=find(par[i])){flag=0;break;} else if(in[i]%2){flag=0;break;} } if(flag)cout<<"1"<<endl; else cout<<"0"<<endl; } return 0;}
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- 栈实现队列&&队列实现栈
- bindService的BIND_AUTO_CREATE和BIND_WAIVE_PRIORITY要点
- 最短路 dijsktra + floyd 详解
- 校招准备系列:每天一道算法题(2)
- [SMOJ1797]旅游
- HDU
- 2016 河南省第九届ACM程序设计大赛 nyoj 1272 表达式求值
- github功能介绍
- 删数问题
- iOS10.3的UILabel无法自动换行问题
- POJ NOI0113-05 素数回文数的个数(Bailian2928)
- Node.js 安装遇到的问题及解决路径(一)
- pixi.js教程中文版--基础篇
- Redis安装php扩展