一笔画问题

时间限制: 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"。
样例输入
2
4 3
1 2
1 3
1 4
4 5
1 2
2 3
1 3
1 4
3 4
样例输出
No
Yes

分析:

典型的欧拉通路(或回路)问题。

输入连线时直接统计每个点的度数。

从点1开始深搜,并用vis数组记录每个点是否被搜索到。

然后遍历每个点,统计度数为奇数的点的个数,当且仅当为2或0时,此图是欧拉回路(或通路),同时,若存在某个点没被搜索到,说明该图本来就不连通,不可能是欧拉回路(或通路)。

代码:

#include<cstdio>
#include<cstring>
struct Node
{int I;int m[1005];
}node[1005];
int visit[1005];
void dfs(int x)
{for(int i=0;i<node[x].I;i++){if(!visit[node[x].m[i]]){visit[node[x].m[i]]=1;;dfs(node[x].m[i]);}}
}
int main()
{int t;scanf("%d",&t);while(t--){int n,m;int u,v;scanf("%d%d",&n,&m);memset(node,0,sizeof(node));memset(visit,0,sizeof(visit));for(int i=0;i<m;i++){scanf("%d%d",&u,&v);int vis=0;for(int j=0;j<node[u].I;j++){if(node[u].m[j]==v){vis=1;break;}}if(!vis&&u!=v){node[u].m[node[u].I]=v;node[u].I++;}vis=0;for(int j=0;j<node[v].I;j++){if(node[v].m[j]==u){vis=1;break;}}if(!vis){node[v].m[node[v].I]=u;node[v].I++;}}visit[1]=1;dfs(1);int ok=0;int odd=0;for(int i=1;i<=n;i++){if(node[i].I&&node[i].I%2)odd++;if(!visit[i]){ok=1;break;}}if(ok)printf("No\n");else if(odd!=2&&odd!=0)printf("No\n");elseprintf("Yes\n");}return 0;
}

nyoj_42 一笔画问题相关推荐

  1. 32个笔画顺序表图片_32个笔画掌握透了,练字真的不难

    笔画作为硬笔书法最基础的部首,也是十分重要的一部分.建议初学者一定先要学好这些笔画.配图选自田英章老师的楷书教材. 这本教材是我上大学时候,社团统一购买的.由于都是大部分都是摹写的,我本人不喜欢摹写, ...

  2. 一笔画问题【数据结构-图论】

    回家路上听到2个人在说:田字怎么一笔写成,并且笔划不重复. 田 我回家想了许久,觉得无论如何走正常的途径肯定是不行的,投机取巧脑筋急转弯的我不讨论. 那么是否可以找到数学定理? 其实就是欧拉七桥问题: ...

  3. 汉字笔画数据_统计学原理 数据的预处理

    数据审核 数据审核-原始数据(raw data) 完整性审核 应调查的单位或个体是否有遗漏 所有的调查项目或变量是否填写齐全 准确性审核 数据是否真实反映实际情况,内容是否符合实际 数据是否有错误,计 ...

  4. 模板 - 欧拉路、欧拉回路(一笔画问题)

    整理的算法模板合集: ACM模板 目录 非递归版 普通递归版 HierholzersHierholzersHierholzers算法(输出字典序最小的答案) FleuryFleuryFleury算法 ...

  5. 一笔画 (25 分)

    小丁最近迷恋上一个游戏,传说中的"一笔画"游戏. 那么什么是一笔画?如下图,顾名思义就是一笔可以完成的图.一笔画最基本的要求是在画图的过程中,笔不能离开纸,且笔所画过的线不能重复, ...

  6. pygame的字体画不出来_5毛钱的圆珠笔画的?每一幅都是大师之作,网友:为何我画不出来...

    5毛钱的圆珠笔画的?每一幅都是大师之作,网友:为何我画不出来 艺术家们总是在记录这个社会,他们通过各种各样的方式来表现出他们对这个社会的热爱,而这些方式中最常见的就是绘画了,在艺术家的画笔之下,定格了 ...

  7. 一笔画问题 (DFS或并查集)

    题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=42 一笔画问题是欧拉回路的一个变形,可以一笔画的条件有两个:1.所有顶点必须连通  2. ...

  8. ny42 一笔画问题

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. ...

  9. hdu3018 一笔画问题

    题意:       给你一幅画,这幅画由点和边构成,问你最少几笔能把这幅画画完. 思路:      这个题目的结论比较巧妙,首先我们考虑下,如果给的图是欧拉图,或者是条欧拉回路,那么我们一笔就搞定了, ...

最新文章

  1. day04 : SQL_DDL, 表创建及管理
  2. 多个Series合并成Dataframe,index不完全匹配怎么处理
  3. Servlet线程安全2
  4. 95后实习生的远程办公体验(asp.net mvc\C#技术栈)
  5. Requests方法 -- Token获取操作
  6. vue-cli安装教程
  7. 【渝粤题库】广东开放大学 建设监理 形成性考核
  8. Redis 与 zset(sorted set有序集合) 相关的常用命令
  9. [转]python中去掉字符串中的\xa0、\t、\n
  10. directUI的心得
  11. .Net魔法堂:发个带附件的邮件
  12. Android-JNI开发系列《十》实践利用libjpeg-turbo完美压缩图片不失真
  13. JavaScript:说看懂了就懂了闭包,看懂了,还是不懂...
  14. 变身mac达人,这几招技巧您有必要了解~
  15. oracle物理结构视频教学,详解Oracle物理结构
  16. PLC控制系统设计的基本内容
  17. 2021电赛预测—手把手带你玩转DDS模块AD9833
  18. balenaEtcher for mac(U盘启动盘制作工具)
  19. SDK对接遇到的问题与解决
  20. 2022夏每日一题(三)

热门文章

  1. 学思录(一):带着信息的角度去学习
  2. Applilet2 for V850ES/Fx3生成代码
  3. MATLAB笔记之wordcloud文字云(lib)的基本使用
  4. showdoc内容备份
  5. 【小程序】如何实现一个可折叠的列表
  6. display-table制作表格
  7. 【项目整理】一个好看的导航栏
  8. Python实现手写数字的识别
  9. 大话西游究竟讲了一个什么故事
  10. 禁用ngnix的空主机头