NYOJ-42 一笔画问题(图论,深搜)

深度优先搜索解决一笔画完 深度优先搜索解决一笔画完 1.游戏介绍 该游戏类似于寻找汉密尔顿路径,也就是给定方格地图、起点,画出一条必须经过所有格子但是只经过每个格子一次的路径。如下图,橙色猫为起点,需遍历图中所有格子: 2.思路分析 处理可分为三大块:录入初始状态,寻找路径,展示结果。 录入初始状态 由于只是作为练习,所以录入初始状态部分我并没有用更高级的库,只是单纯地输入地图为几乘几的网格,哪些位置的网格不是图中可行走... 阅读详情

一笔画问题

时间限制: 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.首先深搜判断图是不是连通的;

        2.若是连通的,则判断是不是欧拉图或者半欧拉图;

           即检查满足以下条件之一: a。所有节点读书为偶数; b。奇度节点个数<=2;

           满足,则输出Yes,否则No;


代码:

#include <stdio.h>
#include <string.h>
#include <vector>
#define N 1010

using namespace std;

struct Node{				//临界表建图
	vector<int>next;	
};

int p, q, li;				// p顶点数 q连边数 li是list数组长度
Node a[N];
int list[N];				// 记录所有使用过的节点编号
bool bz[N];					// 标记数组

bool dfs(int start);		// 深搜,判断图是否连通
bool jc();					// 检查深搜过程中是否遍历到所有节点

int main()
{
	int n;
	scanf("%d", &n);
	while(n --){
		memset(bz, 0, sizeof(bz));
		int x, y;
		li = 0;
		scanf("%d%d", &p, &q);

		for(int i = 0; i < q; i++){						//建图
			scanf("%d%d", &x, &y);
			a[x].next.push_back(y);
			a[y].next.push_back(x);
			if(!bz[x]) { list[li++] = x; bz[x] = 1; }
			if(!bz[y]) { list[li++] = y; bz[y] = 1; }
		}
		bz[list[0]] = 0;

		int t = dfs(list[0]);							//深搜判断图是否连通
		int ls = 0, js = 0;
		for(int j = 0; j < li; j ++){					//判断是不是欧拉图,或者半欧拉图
			ls = a[list[j]].next.size();
			if(ls % 2) js ++;
			a[list[j]].next.clear();
		}
		if(js > 2) t = 1;

		if(!t) printf("Yes\n");
		else printf("No\n");	
	}

	return 0;
}

bool dfs(int start)
{
	for(int i = 0; i < a[start].next.size(); i ++){
		int t = a[start].next.at(i);
		if(!bz[t]) continue;
		bz[t] = 0;
		if(!jc()) return 0;
		if(!dfs(t)) return 0;
		bz[t] = 1;
	}

	return 1;
}

bool jc()
{
	for(int i = 0; i < li; i ++){
		if(bz[list[i]]) return 1;	
	}
	return 0;
}


一笔画问题(nyoj 42) 一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入第一行只有一个正整数N(N 每组测试数据的第一行有两个正整数P,Q(P 随后的Q行,每行有 阅读详情

相关推荐

VScode+MPLAB AI助手:Microchip MCU开发全流程实战解析

本文详细解析了如何使用VScode搭配MPLAB AI助手进行Microchip MCU开发的完整流程。从环境配置、工程创建到代码生成与调试,全面介绍了AI助手在提升开发效率、优化代码和故障排除方面的实际应用,为嵌入式开发者提供了一套高效的开发解决方案。

hh234的博客 1131

广搜(不是图论的那个)

#include #include #include using namespace std; const int N=11; int dist[N][N]; char map[N][N]; int sx,sy,ex,ey; int step[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; int n; void BFS() { int x,y,x1,y1,i

longyuan20102011的专栏 436

SPSS操作(五):主成分分析

1、将数据导入spss,并定义变量,将铁路运输业职工人数(人)、城市公共交通业职工人数(人)、邮政业职工人数(人)、电信和其他信息传输服务业职工人数(人)、客运量(万人)、接待入境旅游人数(万人次)、普通高校师生比(%)、星级住宿业营业额(亿元)分别定义为x1,x2,x3,x4,x5,x6,x7,x8 如图: 2、对数据进行标准化处理 ①选择【分析】—【描述统计】—【描述】 ②添加要标准化的变量,勾选【将标准化值另存为变量(Z)】,再点确定 ③返回原来的数据窗口就可以看见标准化后的变量了 3、SPS

My_daily_life的博客 8万+

一笔画问题

Description 对给定的一个无向图,判断能否一笔画出。若能,输出一笔画的先后顺序,否则输出“No Solution!” 所谓一笔画出,即每条边仅走一次,每个顶点可以多次经过。 输出字典序最小的一笔画顺序。 Input 包含多组测试数据。 第一行n,m,有n个点,m条边,以下m行描述每条边连接的两点。(n Output

Vmorish 908

S-function入门及案例详解(1)——S-function基础介绍及基本案例

本专题将用三篇文章对S-function进行介绍及其案例详解。欢迎关注~ 目录一、S-Function简介二、详解sfuntmpl函数2.1 sfuntmpl函数介绍2.2 mdlInitializeSizes函数2.3 mdlDerivatives函数2.4 mdlUpdate函数2.5 mdlOutputs函数2.6 mdlGetTimeOfNextVarHit函数2.7 mdlTerminate函数三、案例1——对波形的幅值进行放大3.1 案例分析3.2 案例详解3.3 输出波形四、案例2——对波形的

Wendy的博客 7万+

DPABINet保姆级教程:零代码完成脑网络分析与图论计算

本文提供DPABINet的零代码脑网络分析全流程指南。该工具通过图形化界面集成时间序列提取、连接矩阵构建、图论指标计算及统计分析,大幅降低技术门槛。重点解析了阈值选择、二值化与小世界属性计算等关键步骤,帮助研究者快速掌握脑网络分析与图论计算,提升科研效率与可重复性。

j2k3l4的博客 668

一笔画问题(图论+广搜)

一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入第一行只有一个正整数N(N 每组测试数据的第一行有两个正整数P,Q(P 随后的Q行,每行有

u012629369的专栏 1175

VirtualBox虚拟机拖放文件总失败?手把手教你配置双向拖放与共享文件夹(Ubuntu版)

本文详细指导如何在VirtualBox的Ubuntu虚拟机中配置高效的数据交换方案。核心是安装VirtualBox Guest Additions,并在此基础上开启双向拖放与共享粘贴板功能,同时建立稳定的共享文件夹,彻底解决主机与虚拟机间文件传输失败的问题,构建无缝的跨系统工作环境。

weixin_29245767的博客 232

NYoj42 一笔画问题

欧拉图 + DFS (比较模糊...)

GuoZLH的博客 1853

浊音/清音/爆破音的时域及频域特性

第一周作业 浊音/清音/爆破音的时域及频域特性 思路:使用Audacity进行录制,时域部分将音频放大观察波形规律,频域部分生成并进行频谱分析。 (1)浊音U 时域分析: 时域表现为短周期性,波形比较规律。 频域分析: 频域上表现为频率集中在低频区域,共振峰较为明显,短时能量较高。 (2)清音S 时域分析: 时域波形没有周期性,整体振幅小于浊音。 频域分析: 频域波形平缓,无共振峰,能量比较集中。 (3)爆破音t 时域分析: 脉冲波,更为尖锐,整体上振幅降低。 频域分析: 没有像浊音一样的共振

Leylaaaa的博客 1228

Transformer实战(38)——视觉Transformer (Vision Transformer, ViT)

Transformer 在自然语言处理 (NLP) 领域取得了显著成就,在许多不同的任务中都表现出色。在本节中,我们将探索视觉 Transformer (Vision Transformer, ViT) 模型。正如 NLP 领域创建了多种模型一样,视觉领域也开发了多种模型,每种模型都为计算机视觉提供了新的视角。通过本节,将学习如何使用 ViT 等模型进行计算机视觉任务,了解基于 Transformer 的预训练计算机视觉模型的工作原理,以及如何针对特定任务进行微调。

盼小辉丶的博客 2861

NYOJ 42 一笔画问题(欧拉定理&&并查集)

一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入第一行只有一个正整数N(N 每组测试数据的第一行有两个正整数P,Q(P 随后的Q行,每行有

1208

R语言使用rms包的psm函数拟合参数生存模型(parametric survival model)、并可视化列线图(诺模图、nomogram)

R语言使用rms包的psm函数拟合参数生存模型(parametric survival model)、并可视化列线图(诺模图、nomogram)

statistics+insight+vista+power 903

nyoj-42-一笔画问题

42-一笔画问题 内存限制:64MB 时间限制:3000ms 特判: No 通过数:56 提交数:150 难度:4 题目描述: zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。 输入描述: 第一行只有一个正整数N(N&lt;=10)表示测试数据的组数。 每组测试数据的第一行有两个正整数P,Q(P...

weixin_43740054的博客 323

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

nyoj42一笔画问题

一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4              描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入第一行只有一个正整数N(N 每组测试数据的第一行有两个正整数P,Q(P 随后的Q行,每

u012631715的专栏 777

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

NYOJ 42一笔画问题

一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入第一行只有一个正整数N(N 每组测试数据的第一行有两个正整数P,Q(P 随后的Q行,每行有

I_am_growing的专栏 1102

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

NYOJ 42 一笔画问题

深搜

繁华过后你还有我 1409

NYOJ 42--一笔画问题

一笔画问题 题目描述: zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。 输入描述: 第一行只有一个正整数N(N&lt;=10)表示测试数据的组数。 每组测试数据的第一行有两个正整数P,Q(P&...

七分好月 375

NYOJ42-一笔画问题

一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入第一行只有一个正整数N(N 每组测试数据的第一行有两个正整数P,Q(P 随后的Q行,每行有两个正整数A,B(0输出如果存在符

伪Acmer! 656

NYoj-42-一笔画问题-DFS

一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入第一行只有一个正整数N(N 每组测试数据的第一行有两个正整数P,Q(P 随后的Q行,每行有

Fighting_Dream 1207

(欧拉图 并查集 图论) nyoj 42-一笔画问题

题目描述: zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。 输入描述: 第一行只有一个正整数N(N<=10)表示测试数据的组数。 每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),分别表示这...

289

nyoj 42 一笔画

一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。 输入 第一行只有一个正整数N(N<=10)表示测试数据的组数。 每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),...

weixin_43781385的博客 214

nyoj42 一笔画问题 并查集加欧拉回路

原来想的只是个简单欧拉回路问题

shengweisong 832

nyoj42一笔画问题(欧拉图)

这题其实说不上难度4,只是一个简单的欧拉图判断,给一些点,首先判断连通性。如果不连通,就谈不上是欧拉图。 如果是连通的,在判断度的数目,每个顶点都是偶数个或者只有两个是奇数个。这样就可以构成欧拉图。 一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮

用户名是什么 1134
上一篇: KMP算法
下一篇: NYOJ-510 昂贵的聘礼(图论)
tbl00c
博客等级 码龄13年 21粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值