栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

pta 一笔画

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pta 一笔画

小丁最近迷恋上一个游戏,传说中的“一笔画”游戏。

那么什么是一笔画?如下图,顾名思义就是一笔可以完成的图。一笔画最基本的要求是在画图的过程中,笔不能离开纸,且笔所画过的线不能重复,最后画完所有的线便算完成。

虽然小丁喜欢玩这个游戏,但有时候花费半天也找不到答案。小丁听说写一个计算机程序便能判断是否可以一笔画图,所以他希望善良可爱的你来帮帮他的忙。

快来帮帮弱小,可怜,又无助的小丁。

输入格式:

给出图中的节点数N(1<=N<=1000,编号1-N)和边数M;随后M行给出存在边的两个节点的编号。

输出格式:

能够一笔画的图输出Y,否则输出N。

输入样例1:
3 2
1 2
2 3

输出样例1:
Y

输入样例2:
4 3
1 2
1 3
1 4

输出样例2:
N

 代码如下

#include
using namespace std;
int xia[1002][1003] = { 0 };
int n, m,con=0;
int* tips;
void dfs(int k, int n)
{
	tips[k] = 1;
	con++;
	for (int i = 1; i <= n; i++) {
		if (xia[k][i] != 0 && tips[i] == 0) {//如果还有路径就接着向下走
			dfs(i, n);
			break;
		}
	}//走完就判断下是不是全走完了,全走完就直接退出,没有就接着递归
	if (con == n) { cout << "Y"; exit(0); }
	con--;
	tips[k] = 0;
	
}
int main() {

	cin >> n >> m;
	tips = new int[n + 2]();
	int a1, a2;
	for (int i = 0; i < m; i++) {
		cin >> a1 >> a2;
		xia[a1][a2]++;
		xia[a2][a1]++;
	}//连接
	for (int i = 1; i <= n; i++) {
		dfs(i, n);
	}
	cout << "N";
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/587616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号