ny42 一笔画问题
一笔画问题
- 描述
-
zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。
规定,所有的边都只能画一次,不能重复画。
- 输入
-
第一行只有一个正整数N(N<=10)表示测试数据的组数。
每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),分别表示这个画中有多少个顶点和多少条连线。(点的编号从1到P)
随后的Q行,每行有两个正整数A,B(0<A,B<P),表示编号为A和B的两点之间有连线。 - 输出
-
如果存在符合条件的连线,则输出"Yes",
如果不存在符合条件的连线,输出"No"。 - 样例输入
-
2 4 3 1 2 1 3 1 4 4 5 1 2 2 3 1 3 1 4 3 4
- 样例输出
-
No Yes讲解,这一道题仔细理解意思会发现,和“吝啬的国度”那道题很像;就是搜索的方式不同代码如下:
1 #include<iostream> 2 #include<vector> 3 #include<queue> 4 #include<algorithm> 5 using namespace std; 6 const int N=10000; 7 int visit[N]; 8 int cnt; 9 vector< int >cc[N]; 10 void dfs(int x) 11 { 12 visit[x]=1; 13 int next=-1; 14 for(int i=0;i<cc[x].size();i++) 15 { 16 int tmp=cc[x][i]; 17 if(!visit[tmp]) 18 { 19 next=tmp; 20 break; 21 } 22 } 23 if(-1!=next) 24 dfs(next); 25 } 26 int main() 27 { 28 int t,m,n,a,b,i; 29 cin>>t; 30 while(t--) 31 {int max=0; 32 cin>>m>>n; 33 for(i=1;i<=n;i++) 34 { 35 cin>>a>>b; 36 cc[a].push_back(b); 37 cc[b].push_back(a); 38 } 39 int start=1; 40 for(i=2;i<=m;++i) 41 { 42 if(cc[i].size()<cc[start].size()) 43 start=i; 44 } 45 dfs(start); 46 bool flag=true; 47 for(i=1;i<=m;i++) 48 if(!visit[i]) 49 { 50 flag=false; 51 break; 52 } 53 if(!flag) 54 cout<<"No"; 55 else 56 { 57 int j=0; 58 for(i=1;i<=m;i++) 59 if(cc[i].size()&1) 60 j+=1; 61 if(2==j ||0==j) 62 cout<<"Yes"; 63 else cout<<"No"; 64 } 65 for(i = 0; i <=m; ++i) 66 { 67 visit[i]=0;cc[i].clear(); 68 } 69 cout<<endl; 70 } 71 return 0; 72 }
1 #include<stdio.h> 2 #include<string.h> 3 using namespace std; 4 int Edge[2001][2001],visited[1001],degree[4005]; 5 void dfs(int cur,int v) 6 { 7 visited[cur]=1; 8 int i; 9 for(i=1;i<=v;i++) 10 if(Edge[cur][i]) //从邻接顶点往下寻找并计算出结点的度 11 { 12 degree[cur]++; 13 if(!visited[i]) //标记邻接顶点 14 dfs(i,v); 15 } 16 } 17 int main() 18 { 19 int test; 20 scanf("%d",&test); 21 while(test--) 22 { 23 int v,e; 24 memset(Edge,0,sizeof(Edge)); 25 memset(visited,0,sizeof(visited)); 26 memset(degree,0,sizeof(degree)); 27 scanf("%d%d",&v,&e); 28 int j,x,y,ok=1; 29 for(j=1;j<=e;++j) 30 { 31 scanf("%d%d",&x,&y); 32 Edge[x][y]=Edge[y][x]=1; 33 } 34 dfs(1,v); 35 for(j=1;j<=v;++j) //循环判断图是否连通 36 { 37 if(visited[j]==0) 38 { 39 ok=0; //如果有点没有被连到 40 break; 41 } 42 } 43 if(!ok) printf("No\n"); 44 else 45 { 46 j=0; 47 for(int k=1;k<=v;++k) 48 if(degree[k]%2!=0) 49 j+=1; 50 if(j==2||j==0) //j=2时,则有两个点必为起点和终点,j=0,则任意点为起始点 51 printf("Yes\n"); 52 else 53 printf("No\n"); 54 } 55 } 56 }
转载于:https://www.cnblogs.com/lovychen/p/3215221.html
ny42 一笔画问题相关推荐
- 32个笔画顺序表图片_32个笔画掌握透了,练字真的不难
笔画作为硬笔书法最基础的部首,也是十分重要的一部分.建议初学者一定先要学好这些笔画.配图选自田英章老师的楷书教材. 这本教材是我上大学时候,社团统一购买的.由于都是大部分都是摹写的,我本人不喜欢摹写, ...
- 一笔画问题【数据结构-图论】
回家路上听到2个人在说:田字怎么一笔写成,并且笔划不重复. 田 我回家想了许久,觉得无论如何走正常的途径肯定是不行的,投机取巧脑筋急转弯的我不讨论. 那么是否可以找到数学定理? 其实就是欧拉七桥问题: ...
- 汉字笔画数据_统计学原理 数据的预处理
数据审核 数据审核-原始数据(raw data) 完整性审核 应调查的单位或个体是否有遗漏 所有的调查项目或变量是否填写齐全 准确性审核 数据是否真实反映实际情况,内容是否符合实际 数据是否有错误,计 ...
- 模板 - 欧拉路、欧拉回路(一笔画问题)
整理的算法模板合集: ACM模板 目录 非递归版 普通递归版 HierholzersHierholzersHierholzers算法(输出字典序最小的答案) FleuryFleuryFleury算法 ...
- 一笔画 (25 分)
小丁最近迷恋上一个游戏,传说中的"一笔画"游戏. 那么什么是一笔画?如下图,顾名思义就是一笔可以完成的图.一笔画最基本的要求是在画图的过程中,笔不能离开纸,且笔所画过的线不能重复, ...
- pygame的字体画不出来_5毛钱的圆珠笔画的?每一幅都是大师之作,网友:为何我画不出来...
5毛钱的圆珠笔画的?每一幅都是大师之作,网友:为何我画不出来 艺术家们总是在记录这个社会,他们通过各种各样的方式来表现出他们对这个社会的热爱,而这些方式中最常见的就是绘画了,在艺术家的画笔之下,定格了 ...
- 一笔画问题 (DFS或并查集)
题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=42 一笔画问题是欧拉回路的一个变形,可以一笔画的条件有两个:1.所有顶点必须连通 2. ...
- hdu3018 一笔画问题
题意: 给你一幅画,这幅画由点和边构成,问你最少几笔能把这幅画画完. 思路: 这个题目的结论比较巧妙,首先我们考虑下,如果给的图是欧拉图,或者是条欧拉回路,那么我们一笔就搞定了, ...
- 汉字的奥秘: 获取汉字的笔画数
汉字的奥秘: 获取汉字的笔画数 想想看,如果你需要在代码里面得到汉字的笔画数,该怎么办呢?每到这个时候,我们就一直感慨咱汉字的复杂啊 网上搜了一下,能看到的解决方案大抵都是说把所有汉字的笔画预先记录好 ...
最新文章
- 逆向而行—ASP的O/R MAPPING 使用解释
- unity fixedupdate_unity相关
- 利用任务调度特性检测Android模拟器
- 中国大学mooc慕课python答案_中国大学MOOC(慕课)Python编程基础题目答案
- 三十、PHP框架Laravel学习笔记——模型的预加载
- html 自动排序代码,SEO中常用HTML代码大全,及权重排序
- mybatis--一对一、一对多、多对多(七)
- 关于单片机大循环结构编程
- gentoo 安装php7,在Gentoo安装Wifidog Portal
- vivo x6plus支持html,vivo x6plus手机USB驱动
- 万年历php程序含数据库,php之万年历
- hdu 5510 strstr/find/KMP
- CS院校解析 | 清华大学深圳国际研究生院
- win10系统更新后打开chrome浏览器几秒后自动闪退
- maven中filtering的使用
- 计算机总是无法完成更新失败,Win10系统更新失败无法完成更新正在撤销更改的解决方法...
- mysql 5.7 ga_mysql 5.7.9(GA) 安装
- android 照相机app,Spectre相机
- 【JavaScript】 模块 module
- java判断当前时间在某个时间段内