nyoj 42-一笔画问题 (欧拉图 && 并查集)
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-一笔画问题 (欧拉图 && 并查集)的更多相关文章
- NYOJ 42 一笔画问题 (并查集+欧拉回路 )
题目链接 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画. 输入 第一行只有一个正整数 ...
- nyist 42 一笔画 (欧拉回路 + 并查集)
nyoj42 分析: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径. 若该路径是一个圈,则称为欧拉(Euler)回路. 具有欧拉回路的图称为欧拉图(简称E图).具有欧拉路 ...
- NYOJ 42 一笔画问题
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
- nyoj 42 一笔画 欧拉通路
http://acm.nyist.net/JudgeOnline/problem.php?pid=42 一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc ...
- NYOJ 42 一笔画
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
- poj 2513 Colored Sticks trie树+欧拉图+并查集
点击打开链接 Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 27955 Accepted ...
- nyoj--42--一笔画问题(并查集)
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. ...
- NYOJ 129 树的判定 (并查集)
题目链接 描述 A tree is a well-known data structure that is either empty (null, void, nothing) or is a set ...
- nyoj 42 一笔画问题 欧拉路径
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=42 欧拉回路,欧拉路径水题~ 代码: #include "stdio.h&quo ...
随机推荐
- Ubuntu 终端中文回显乱码
参考文章 : http://wiki.ubuntu.org.cn/%E4%BF%AE%E6%94%B9locale 所用 Ubuntu的版本 : 猜想是这样的: 1.字符的编码和显示时,所处的环境不是 ...
- [七年技术总结系列][理论篇]-RBAC权限模型由浅入深
权限部分将分两章介绍,第一章由浅入深介绍权限理论知识及应用,第二章介绍具体实现.后期再讲述中间件的使用时,还会插入一些权限内容,本质上属于中间件的应用. 权限模块是业务系统最常见.最基本的子集.本章假 ...
- 《HelloGitHub》第 43 期
兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...
- 实现基于netty的web框架,了解一下
上一篇写了,基于netty实现的rpc的微框架,其中详细介绍netty的原理及组件,这篇就不过多介绍 这篇实现基于netty的web框架,你说netty强不强,文中有不对的地方,欢迎大牛指正 先普及几 ...
- JVM(7) Java内存模型与线程
衡量一个服务性能的高低好坏,每秒事务处理数(Transactions Per Second,TPS)是最重要的指标之一,它代表着一秒内服务端平均能响应的请求总数,而 TPS 值与程序的并发能力又有非常 ...
- Unity5-ABSystem(三):AssetBundle加载
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lodypig/article/detai ...
- Java中 实体类 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
PO(persistant object) 持久对象 在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了.通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理.可以 ...
- Kruskal算法求最小生成树 笔记与思路整理
整理一下前一段时间的最小生成树的算法.(其实是刚弄明白 Kruskal其实算是一种贪心算法.先将边按权值排序,每次选一条没选过的权值最小边加入树,若加入后成环就跳过. 先贴张图做个示例. (可视化均来 ...
- 关于css布局的一点记录
1 关于css实现水平垂直居中的一些方法: .css的定位:用margin,padding,position position:absolute; //绝对定位,一般父级元素采用relative来 ...
- NOIP的模板--考前复习
距离NOIP还有25天 可以去放弃一些巨难得题目去搞一些模板了 -------在校老师的原话 一·快排 虽然可以手打,最好用STL,里面有很多优化,会快很多 #include<iostream& ...