42-一笔画问题

内存限制:64MB
时间限制:3000ms
Special Judge: No

accepted:10
submit:25

题目描述:

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 分析:
  ①、要想一笔画成就要满足在同一个集合(通过:“并查集”判断是否是在同一个集合)
  ②、在一个集合的前提下通过判断奇点个数是否为0(欧拉图)、2(半欧拉图)就可以判断是否可以一笔画成 核心代码(并查集模板):
 void my_init()
{
for(int i = ; i <= n; ++ i)
pre[i] = i;
} int my_find(int x)
{
int n = x;
while(n != pre[n])
n = pre[n];
int i = x, j;
while(pre[i] != n)
{
j = pre[i];
pre[i] = n;
i = j;
}
return n;
} void my_join(int a, int b)
{
int n1 = my_find(a), n2 = my_find(b);
if(n1 != n2)
pre[n1] = n2;
}

C/C++代码实现(AC):
 #include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <stack>
#include <map>
#include <queue>
#include <set> using namespace std;
const int MAXN = ;
int pre[MAXN], n, m, flag1, flag2, cnt, node[MAXN], cnt2; void my_init()
{
for(int i = ; i <= n; ++ i)
pre[i] = i;
} int my_find(int x)
{
int n = x;
while(n != pre[n])
n = pre[n];
int i = x, j;
while(pre[i] != n)
{
j = pre[i];
pre[i] = n;
i = j;
}
return n;
} void my_join(int a, int b)
{
int n1 = my_find(a), n2 = my_find(b);
if(n1 != n2)
pre[n1] = n2;
} int main()
{ int t;
scanf("%d", &t);
while(t --)
{
flag1 = , flag2 = , cnt = , cnt2 = ;
scanf("%d%d", &n, &m);
memset(node, , sizeof(node));
my_init();
for(int i = ; i < m; ++ i)
{
int a, b;
scanf("%d%d", &a, &b);
my_join(a, b);
node[a] ++;
node[b] ++;
}
for(int i = ; i <= n; ++ i)
{
if(pre[i] == i)
{
cnt ++;
if(cnt == )
flag1 = ;
}
if(node[i]&) cnt2 ++;
}
if(cnt2 != && cnt2 != ) flag2 = ;
if(!flag1 && !flag2) printf("Yes\n");
else printf("No\n");
}
return ;
}

nyoj 42-一笔画问题 (欧拉图 && 并查集)的更多相关文章

  1. NYOJ 42 一笔画问题 (并查集+欧拉回路 )

    题目链接 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画.   输入 第一行只有一个正整数 ...

  2. nyist 42 一笔画 (欧拉回路 + 并查集)

    nyoj42 分析: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径. 若该路径是一个圈,则称为欧拉(Euler)回路. 具有欧拉回路的图称为欧拉图(简称E图).具有欧拉路 ...

  3. NYOJ 42 一笔画问题

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

  4. nyoj 42 一笔画 欧拉通路

    http://acm.nyist.net/JudgeOnline/problem.php?pid=42 一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc ...

  5. NYOJ 42 一笔画

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

  6. poj 2513 Colored Sticks trie树+欧拉图+并查集

    点击打开链接 Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 27955   Accepted ...

  7. nyoj--42--一笔画问题(并查集)

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

  8. NYOJ 129 树的判定 (并查集)

    题目链接 描述 A tree is a well-known data structure that is either empty (null, void, nothing) or is a set ...

  9. nyoj 42 一笔画问题 欧拉路径

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=42 欧拉回路,欧拉路径水题~ 代码: #include "stdio.h&quo ...

随机推荐

  1. [JOYOI1463] 智商问题

    题目限制 时间限制 内存限制 评测方式 题目来源 1500ms 131072KiB 标准比较器 Local 题目背景 各种数据结构帝~ 各种小姊妹帝~ 各种一遍AC帝~ 来吧! 题目描述 某个同学又有 ...

  2. Zeebe服务学习5-多实例特性实践

    一.背景 在0.21版本之前,Zeebe不支持多实例元素,在2019年10月9号发布的0.21版本中,加入这一特性, 主要是体现在Zeebe Modeler 0.7.0以及之后的版本中. 二.特性介绍 ...

  3. linux使用jq工具解析json

    jq类似一个awk或grep一样的神器,可以方便地在命令行操作json 这里我使用海南万宁的天气接口做演示,地址:http://t.weather.sojson.com/api/weather/cit ...

  4. static self 区别与总结

    <?php /** * static self 区别与总结 * 总结: * 1.在 PHP 里,在没有继承时候,你用self::class 和 static::class是一样的,都是获取当前类 ...

  5. PHP5底层原理之变量

    PHP5底层原理之变量 变量结构 zval 结构体 PHP 所有类型的变量在底层都会以 zval 结构体的形式实现 (源码文件Zend/zend.h) 源码根目录搜索 grep -rin --colo ...

  6. day1-01 温度转换

    一."温度转换"问题分析 1.1 温度转换 温度刻画的两种不同体系 摄氏度:中国等世界大多数国家使用 以1标准大气压下水的结冰点为0度,沸点为100度,将温度进行等分刻画 华氏度: ...

  7. The usage of Markdown---链接的使用

    目录 1. 序言 2. 网页链接 3. 图片链接 4. 页内跳转 更新时间:2019.09.14 1. 序言   在编辑文章的时候,我们常常需要插入各种链接,比如说网页链接,图片链接等等.当文章篇幅过 ...

  8. Java网络编程(二)IP、URL和HTTP

    一.IP InetAddress类有一些静态工厂方法,可以连接到DNS服务器来解析主机名. 示例1:InetAddress address = InetAddress.getByName(" ...

  9. Unity C#数据持久化与xml

    最近工作需要用到数据持久化,所以在此分享一下,通过查阅资料,数据持久化大体都是通过xml或者json来进行的.unity为我们自定义了数据持久化方法,但是比较局限,还需要自己来完成数据持久化方法. ( ...

  10. 实战--dango自带的分页(极简)

    注意,我将templates定义在项目的同级目录下: 在settings.py中配置 TEMPLATES = [ { 'BACKEND': 'django.template.backends.djan ...