九度题目1027:欧拉回路
2014-05-14 21:33
211 查看
题目1027:欧拉回路
时间限制:1 秒内存限制:32 兆特殊判题:否提交:2344解决:1157
题目描述:
欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
输入:
测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结束。
输出:
每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。
样例输入:
3 3
1 2
1 3
2 3
3 2
1 2
2 3
0
样例输出:
1
0
来源:
2008年浙江大学计算机及软件工程研究生机试真题
典型的欧拉回路
AC代码:
时间限制:1 秒内存限制:32 兆特殊判题:否提交:2344解决:1157
题目描述:
欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
输入:
测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结束。
输出:
每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。
样例输入:
3 3
1 2
1 3
2 3
3 2
1 2
2 3
0
样例输出:
1
0
来源:
2008年浙江大学计算机及软件工程研究生机试真题
典型的欧拉回路
AC代码:
#include<stdio.h> #include<string.h> struct node//创建一个路径计数结构体 { int len; int path[1200]; }a[1200]; int jar[1200]; void DFS(int n) { int last; while(a .len!=0)//深入搜索 a 每一个能连接的点 { last=a .path[a .len-1];//传回最后一个数据 jar[last]=1;//标记此路径已经被联通 a .len--;//删除最后一个数据 DFS(last);//跳向下一个点进行搜索 } } int main() { int i,j,n,m,x,y,num,size,flag; while(scanf("%d",&n),n!=0) { scanf("%d",&m); memset(a,0,sizeof(a)); for(i=0;i<m;i++) { scanf("%d %d",&x,&y); a[x].path[a[x].len++]=y;//a[x]末尾添加y a[y].path[a[y].len++]=x;//a[y]末尾添加x } num=0; for(i=1;i<=n;i++) { size=a[i].len; if(size%2!=0)//检查每一个点相对于其它点的连通性 num++; } memset(jar,0,sizeof(jar)); jar[1]=1;//先标记第一个点直接能通过 DFS(1); flag=1; for(i=1;i<=n;i++)//存在点一个点,其与任意一点都不相连 if(jar[i]==0) { flag=0; break; } if(num!=0) flag=0;//等于0时是完全环,符合一笔画,否则不是 if(flag==1) printf("1\n"); else printf("0\n"); } return 0; }
相关文章推荐
- 九度OJ-题目1027 欧拉回路
- 九度:题目1027:欧拉回路
- 九度 题目1027:欧拉回路
- 九度 题目1027:欧拉回路
- 题目1027:欧拉回路
- 图(非递归)_题目1027:欧拉回路
- 题目1027:欧拉回路
- HDOJ-1878欧拉回路 && 九度OJ-1027欧拉回路
- 题目1027:欧拉回路 2008年浙江大学计算机及软件工程研究生机试真题
- 题目1027:欧拉回路
- 题目1027:欧拉回路
- 题目1027:欧拉回路
- 【九度OJ】1027【欧拉回路】【C实现】【浙大2008】
- 九度1027 - 数学 - 欧拉回路
- 九度1027(判断欧拉回路)
- 题目1027:欧拉回路
- 九度[1027]-欧拉回路
- 九度oj 题目1027:欧拉回路 【ZJU2008考研机试题2】
- 九度OJ 1027:欧拉回路 (欧拉回路)
- 九度OJ 1027:欧拉回路 (欧拉回路)