nyoj42 一笔画问题 (欧拉回路)
来源:互联网 发布:js slice方法 编辑:程序博客网 时间:2024/04/29 10:45
一笔画问题
时间限制:3000 ms | 内存限制:65535 KB
难度:4
- 描述
zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。
规定,所有的边都只能画一次,不能重复画。
- 输入
- 第一行只有一个正整数N(N<=10)表示测试数据的组数。
每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),分别表示这个画中有多少个顶点和多少条连线。(点的编号从1到P)
随后的Q行,每行有两个正整数A,B(0<A,B<P),表示编号为A和B的两点之间有连线。 - 输出
- 如果存在符合条件的连线,则输出"Yes",
如果不存在符合条件的连线,输出"No"。 - 样例输入
24 31 21 31 44 51 22 31 31 43 4
- 样例输出
NoYes
- 来源
- [张云聪]原创
- 上传者
- 张云聪
#include <stdio.h>#include <string.h>int flag,fa[1005],n,rank[1005];int find(int x)//查找并压缩路径{if(fa[x]!=x) fa[x]=find(fa[x]);return fa[x];}void uni(int x,int y)//树的层数{if(rank[x]>=rank[y]){fa[y]=x;rank[x]++;}else{rank[y]++;fa[x]=y;}}int main(){int ncase,num[1005],v;scanf("%d",&ncase);while(ncase--){memset(fa,0,sizeof(fa));memset(rank,0,sizeof(rank));memset(num,0,sizeof(num));scanf("%d %d",&n,&v);for(int i=1;i<=n;i++)fa[i]=i,rank[i]=0;for(int i=0;i<v;i++){int a,b,x,y;scanf("%d %d",&a,&b);num[a]++,num[b]++;x=find(a),y=find(b);if(x!=y)uni(x,y);}int odd=0,sum=0;for(int i=1;i<=n;i++){if(num[i]%2)odd++;if(fa[i]==i)sum++;}if(odd==0||odd==2&&sum==1)//odd=2时不是一个环,odd=2是个环,sum=1只有一个根printf("Yes\n");elseprintf("No\n");}return 0;}
1 0
- nyoj42 一笔画问题 (欧拉回路)
- nyoj42一笔画问题 【欧拉回路】
- NYOJ42 一笔画问题 【欧拉回路】+【并查集】
- nyoj42一笔画问题(欧拉回路)
- NYOJ42 一笔画问题 欧拉回路判定+前向星
- nyoj42 一笔画问题(欧拉回路+并查集)
- nyoj42 一笔画问题 并查集加欧拉回路
- 【欧拉回路/通路】 nyoj42 一笔画问题(无向图) && poj1386Play on Words(有向图)
- 欧拉回路解决一笔画问题
- 一笔画问题 【欧拉回路】+【dfs】
- NYOJ42 一笔画问题
- NYOJ42-一笔画问题
- nyoj42一笔画问题
- nyoj42 一笔画问题
- NYOJ42-一笔画问题
- NYOJ42一笔画问题
- nyoj42 一笔画问题
- NYoj42 一笔画问题
- Asp.net-知识总结(7)
- uva10828(高斯消元)
- JAVA多线程实例详解
- 浅析PageRank算法
- 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动
- nyoj42 一笔画问题 (欧拉回路)
- 架构设计:负载均衡层设计方案(7)——LVS + Keepalived + Nginx安装及配置
- linux下打开windows txt文件中文乱码解决方法
- Unreal4 IOS上使用第三方库和C++11 特性问题解决
- JRockit安装配置
- 【Python】一次性解决Eciplse中Python中文乱码
- hdu 3338 Kakuro Extension(最大流)
- hdu5323 给出左右边界,求出线段树最小的大小(暴力dfs搜索)
- [转载] java web开发一个帐号同一时间只能一个人登录