问题描述:

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是利用dfs或bfs,但是时间复杂度很高。
    方法2是利用欧拉定理的性质,使用并查集加速解决!

方法1:dfs

#include <cstdio>
#include <cstring>
using namespace std;
const int Max = 1111;
int map[Max][Max];
int vis[Max],coun[Max];
int n,p,q,f;
void dfs(int u){vis[u]=1;for(int i=1;i<=p;i++){ //对于每个顶点 if(map[u][i]){ //如果存在边<u,i> coun[u]++;   //每个顶点的度数 if(!vis[i]) dfs(i);}}
}
int main(){scanf("%d",&n);while(n--){f=0;memset(coun,0,sizeof(coun));memset(map,0,sizeof(map));memset(vis,0,sizeof(vis));int a,b;scanf("%d %d",&p,&q); //p点,q边 for(int i=0;i<q;i++){scanf("%d %d",&a,&b);map[a][b]=map[b][a]=1;}dfs(1);for(int k=1;k<=p;k++) if(!vis[k]){f=1; break;}if(f) printf("No\n");else{int j=0;for(int k=1;k<=p;k++)if(coun[k]%2!=0) j+=1; //记录度数为奇数的个数 if(j==2||j==0)   //如果度数为奇数的为两个,则这俩个是起点和终点 printf("Yes\n"); //如果度数为奇数的为0个,则所有点可为起点 else printf("No\n");}}return 0;
}

方法2:并查集

#include<bits/stdc++.h>
using namespace std;
int fa[1005],s[1005];//s记录每个节点的度
int find(int x){ //寻找x根节点 if(x!=fa[x]) fa[x]=find(fa[x]);return fa[x];
}
int main(){int n,p,q,a,b;scanf("%d",&n);while(n--){scanf("%d %d",&p,&q);memset(s,0,sizeof(s));for(int i=1;i<=p;i++) fa[i]=i; //开始每个节点的根节点都是自己 for(int i=0;i<q;i++){scanf("%d%d",&a,&b);s[a]++;s[b]++;if(find(a)!=find(b)) fa[find(b)]=find(a); //合并两个分支}int s1=0,s2=0;for(int i=1;i<=p;i++){if(find(i)==i) s1++;//判断是否为连通 if(s[i]%2==1) s2++;//统计度 }if(s1==1&&(s2==0||s2==2)) printf("Yes\n"); //欧拉定理 else  printf("No\n");}return 0;
}

《一笔画问题》解题报告相关推荐

  1. NOIP2012提高组 开车旅行 解题报告

    开车旅行 题目描述 样例输入 样例输出 70分算法 暴力预处理出对于每一个点他右边最近.次近的点的编号,对于每一个询问,暴力模拟开车过程即可. 100算法 和上面一样我们得预处理出每一个点最近.次近的 ...

  2. 《商务旅行》解题报告

    <商务旅行>解题报告 by mps [题目描述] 某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间. 假设有N个城镇,首都编号为1,商人从首都出发,其 ...

  3. 程序设计算法竞赛高级——练习1解题报告

    程序设计算法竞赛高级--练习1解题报告 1001 寒冰王座 Problem Description 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的 ...

  4. 中船嘉年华邮轮揭幕全新企业品牌标识;美国运通全球商务旅行完成对Expedia集团旗下易信达的收购 | 全球旅报...

    厦门W酒店闪耀登"鹭" 全新感官盛宴耀然揭幕.万豪国际集团旗下W酒店宣布,厦门W酒店开业.厦门W酒店业主方为宝龙集团.酒店坐落于厦门时尚的东部商圈,毗邻厦门新落成的宝龙一城地标购物 ...

  5. 商务旅行代理服务市场现状研究分析-

    辰宇信息咨询市场调研公司最近发布-<2022-2028中国商务旅行代理服务市场现状研究分析与发展前景预测报告 > 内容摘要 本文研究中国市场商务旅行代理服务现状及未来发展趋势,侧重分析在中 ...

  6. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  7. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  8. 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...

  9. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  10. 解题报告(十三)中国剩余定理(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

最新文章

  1. 【Python-ML】SKlearn库决策树(DecisionRegression) 使用
  2. 安装32位mysql报错_在CentOS中安装32位或64位MySql报错error: Failed dependencies解决办法...
  3. __getattr__在python2.x与python3.x中的区别及其对属性截取与代理类的影响
  4. Jerry Wang诚邀广大SAP同仁免费加入我的知识星球,共同探讨SAP技术问题
  5. 2017最新nginx+keepalived+centos7安装配置过程
  6. 物化视图的刷新方式说明
  7. web前端学习资源分享
  8. 论文查重前应删掉哪些内容?
  9. 登陆服务器显示guest,登录界面如何隐藏guest账号
  10. 常见的加密方式之python实现
  11. C Primer Plus 第2章 课后答案
  12. win10多用户同时远程桌面登陆Termsrv.dll(允许多个RDP会话)-win10最新2004版。
  13. 项目管理sod_Microsoft Visual SourceSafe(项目文件管理) V6.0 最新中文版(图文)
  14. 解决linux网速慢问题
  15. 解决使用Java CV导致物理内存过高问题
  16. 思科http服务器显示设置,思科里面的服务器怎么设置
  17. matlab怎么求三次微分,Matlab – 求解三阶微分方程
  18. 网投简历应该注意些什么
  19. itext html转换pdf,使用iText-2.0.8将Html转换为pdf,带图片功能
  20. chrome vue 未响应_vue兼容低版本chrome

热门文章

  1. ADO连接Access数据库,Access版本问题
  2. ODrive应用 #1 ODrive入门指南
  3. 03_RabbitMQ快速入门案例
  4. 【趣说JAVA】什么是生产者消费者模式?用恶趣味的方式来解释
  5. 【干货分享】学生党必备脑图软件
  6. 手机数据恢复软件怎么选择
  7. python超级画板白板程序源码
  8. 在Mac安装一个即插即用的Win10系统-Win To Go安装教程【自存】
  9. 浅谈搜索引擎和传统数据库(ES,solr)
  10. mac qq邮箱无法验证