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行,每行有 阅读详情

相关推荐

cuda2 but found one of them on device cuda 0

cuda2 but found one of them on device cuda 0 上面问题的重点是,不是cpu和gpu之间的常规问题,而是出现在不同gpu之间的数据。 出问题地方: model = nn.DataParallel(model, device_ids=[2,4]) 先说解决方法: 方案一: model = nn.DataParallel(model, device_ids=[0,2,4]) 前面一定要给一个0的序号,如果0被别人占了呢? 方案二: os.environ["CUDA_

binqiang2wang 665

广搜(不是图论的那个)

#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

FastAdmin框架Token验证实战:从登录到API调用的完整流程

本文详细解析了在FastAdmin框架中实现Token验证的完整流程,从数据表设计、登录接口签发Token,到核心验证中间件的编写与路由配置,并探讨了在业务API中的调用与安全实践。内容涵盖Token生成策略、有效期管理及安全增强措施,为开发者提供了一套可落地的API身份验证解决方案。

nnn11的博客 916

一笔画问题

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

Vmorish 908

跨境TRS投资操作指南与系统解决方案

3 点击【申请 TRS 账户】,查看风险披露,录入账户参数、确定录入的参数信息,进行身份验证,输入验证码,TRS 账户开户申请已提交,后台对已提交的 TRS 开户申请进行审核,审核成功后,短信邮箱提醒,进行登录;2.点击【申请TRS账户】,查看风险披露,录入账户参数、确定录入的参数信息,进行身份验证,输入验证码,TRS账户开户申请已提交,后台对已提交的TRS开户申请进行审核,审核成功后,短信邮箱提醒,进行登录;4)更广泛的投资选择:相比A股通,TRS可以交易更多的A股标的,提供了更广泛的投资选择。

2401_85487119的博客 2850

模拟IC设计避坑:手把手教你用Cadence仿真恒定跨导轨到轨运放(附完整工艺库文件)

本文详细解析了使用Cadence仿真恒定跨导轨到轨运放的全流程,涵盖电路原理、工艺库配置、尺寸设计及仿真分析。通过1:3电流镜补偿技术实现跨导稳定,提供CSMC 0.25um工艺下的实战案例,帮助工程师规避设计陷阱,提升模拟IC设计效率。

weixin_30952535的博客 494

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

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

u012629369的专栏 1175

科研绘图系列:基因突变瀑布图统计以及可视化

科研绘图系列:基因突变瀑布图统计以及可视化

专注生信领域 1653

NYoj42 一笔画问题

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

GuoZLH的博客 1853

【3GPP核心网】【5G】史上最全的5G协议规范总结

物理层信道定义:TS38.211(物理层信号的生成、调制,DMRS和额外DMRS,PRACH configuration index,Point A等介绍)传输信道和控制信道的数据处理:TS38.212(包括复用,信道编码,交织,DCI,DMRS端口号等)物理层控制过程:TS38.213(同步,上行功控,随机接入,UE上报和接收控制消息的过程,SSB等)物理层测量:TS38.215(UE和网络的测量控制,UE测量能力)频率、频点相关F R1:TS38.101-1。

风云说通信 3177

【RT-DETR实战】112、NCNN模型转换与层实现支持:从模型文件到推理引擎的硬核实战

本文详细记录了将RT-DETR模型部署到NCNN框架的全过程及关键要点。作者首先遇到MultiHeadAttention等算子不支持的问题,通过ONNX中间转换和自定义层实现解决。文章具体介绍了PyTorch到NCNN的权重转换技巧、模型优化方法(包括量化和线程优化)以及调试经验,强调逐层对比输出、预处理检查和边界情况测试的重要性。最后分享了保持转换流程可复现性的实用建议,指出手动调试虽然耗时但能加深对模型的理解,体现了工程师在解决技术难题时的专业精神与成就感。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 41

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

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

1208

SAP SD模块定价过程后台配置简介

只有手工输入定价时(例如,在定价中的定价浏览屏幕中),或者只有从外部处理转移这些定价时(例如,成本核算),才将这些定价包括在确定(价格确定、输出确定,批次确定)之中。定价过程的定义和分配是SD模块中最核心的配置,包含了条件表、条件类型、存取顺序、发票类型、客户定价过程等,确定了销售订单已什么价格销售、税率、附加折扣等多个条件行程有一个定价过程。12、小计:记录该条件类型在VBAP表中是否存储,以及其后续用途,如记入信贷,占用信贷额度,记入成本等,如果需要金额暂用信贷额度的话,在小计这里选择A即可。

我小时候很黑的博客 3782

nyoj-42-一笔画问题

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

weixin_43740054的博客 323

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

nyoj42一笔画问题

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

u012631715的专栏 777

VB摄像头监控

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

NYOJ 42一笔画问题

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

I_am_growing的专栏 1102

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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、付费专栏及课程。

余额充值