九度oj 1027
来源:互联网 发布:重庆seo网络优化 编辑:程序博客网 时间:2024/06/18 09:37
- 题目描述:
- 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
- 输入:
- 测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结束。
- 输出:
- 每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。
- 样例输入:
3 31 21 32 33 21 22 30
- 样例输出:
10
- 来源:
2008年浙江大学计算机及软件工程研究生机试真题
#include<iostream>#include<stdio.h>#include<string.h>#include<stdlib.h>using namespace std;int tree[2000];int findroot(int x){ if(tree[x]==-1) return x; else return findroot(tree[x]);}int main(){ int n,m; int degree[2000]; int flag; while(cin>>n>>m) { if(n==0) break; flag=0; memset(tree,-1,sizeof(tree)); for(int i=1;i<=n;i++) { degree[i]=0; } for(int i=1;i<=m;i++) { int a,b; cin>>a>>b; degree[b]++; degree[a]++; int p=findroot(a); int q=findroot(b); if(p!=q) { tree[p]=q; } } int ans=0; for(int i=1;i<=n;i++) { if(tree[i]==-1) { ans++;} } if(ans==1) { for(int i=1;i<=n;i++) { if(degree[i]%2!=0) { flag=1; break;; } } if(flag==0) { cout<<"1"<<endl; } else cout<<"0"<<endl; } else cout<<"0"<<endl; } }
0 0
- 九度oj 1027
- 【九度OJ】:九度OJ 1050
- 【九度OJ】:九度OJ 1053
- 【九度OJ】:九度OJ 1056
- 【九度OJ】:九度OJ 1059
- 【九度OJ】:九度OJ 1206
- 九度OJ:1000
- 【九度OJ】 1006
- 九度 OJ 1499
- 九度OJ-1002
- 九度OJ-1003
- 九度OJ 1004
- 九度OJ 1003
- 九度oj 采药
- 九度OJ 1001
- 九度OJ 1015
- 九度oj 1972
- 九度OJ 1161
- POJ----- 3299 Humidex
- c语言语法(三)
- 线段树 + 扫描线加深详解
- iOS概念入门学习-C语言-字符串
- java 如何跳出当前的多重嵌套循环
- 九度oj 1027
- Android开源项目分类汇总
- 如何在GNOME的鼠标右键菜单里添加启动终端的选项
- linux,windows 可执行文件(ELF、PE)
- Android自定义类似ProgressDialog效果的Dialog
- linux的二进制编辑
- cocos2d-x《农场模拟经营养成》游戏完整源码
- 合并merge into
- Exchanger两个线程之间交换数据