首页 > 编程语言 >南沙信奥赛C++陈老师解一本通题:1341:【例题】一笔画问题

南沙信奥赛C++陈老师解一本通题:1341:【例题】一笔画问题

时间:2024-09-04 16:39:19浏览次数:9  
标签:笔画 degree int 1341 信奥赛 回路 例题 欧拉 501

 题目描述】

如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。

根据一笔画的两个定理,如果寻找欧拉回路,对任意一个点执行深度优先遍历;找欧拉路,则对一个奇点执行dfs,时间复杂度为O(m+n),m为边数,n是点数。

【输入】

第一行n,m,有n个点,m条边,以下m行描述每条边连接的两点。

【输出】

欧拉路或欧拉回路,输出一条路径即可。

【输入样例】

5 5
1 2
2 3
3 4
4 5
5 1

【输出样例】

1 5 4 3 2 1

【提示】

【数据范围】

对于100%的数据:1 < n < 100,1 < m < 2000。

 

#include <bits/stdc++.h>
using namespace std;
int g[501][501],n,m,x,y,degree[501];
stack<int> st;
void dfs(int i)
{
	for(int j=1;j<=n;j++)
	{
		if(g[i][j]==1)
		{
			g[i][j]=g[j][i]=0;
			dfs(j);
		}
	}
	st.push(i);
}
int main()
{
	int start=1;
	memset(g,0,sizeof(g));
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>x>>y;
		g[x][y]=g[y][x]=1;	
		degree[x]++;
		degree[y]++;
	}
	for(int i=1;i<=n;i++)// 注意题目如果找不到奇点就要顶点1出发 
		if(degree[i]%2==1)
		{
			start=i;
			break;
		}
	dfs(start);
	while(!st.empty())
	{
		cout<<st.top()<<" ";
		st.pop();
	}
	return 0;
}

 

标签:笔画,degree,int,1341,信奥赛,回路,例题,欧拉,501
From: https://www.cnblogs.com/nanshaquxinaosai/p/18396805

相关文章

  • C语言典型例题60
    《C程序设计教程(第四版)——谭浩强》习题4.1统计全单位人员的平均工资。单位的人数是不固定的,工资数从键盘先后输入,当输入-1时,表示输入结束(前面输入的都是有效数字)。代码://《C程序设计教程(第四版)——谭浩强》//习题4.1统计全单位人员的平均工资。单位的人数是不固定......
  • 南沙信奥赛老师解一本通题:1410:最大质因子序列
    ​【题目描述】任意输入两个正整数m,n(1<m<n≤5000),依次输出m到n之间每个数的最大质因子(包括m和n;如果某个数本身是质数,则输出这个数自身)。【输入】一行,包含两个正整数m和n,其间以单个空格间隔。【输出】一行,每个整数的最大质因子,以逗号间隔。【输入样例】510【输......
  • 南沙信奥赛老师解一本通题: 1413:确定进制
    ​题目描述】  【输入】一行,包含三个整数p、q、r。p、q、r的所有位都是数字,并且1≤p、q、r≤1,000,000。【输出】一个整数:即使得p×q=r成立的最小的B。如果没有合适的B,则输出0。【输入样例】6942【输出样例】13 #include<bits/stdc++.h>usingnam......
  • 六大排序(算法详解+模板+例题)
    一.排序算法是什么排序算法(SortingAlgorithms)是一种数据结构操作,它的目的是将一串元素按照特定的顺序规则组织起来。常见的排序算法有升序(从小到大)和降序(从大到小)排列,如冒泡排序、希尔排序、插入排序、选择排序、快速排序、归并排序等。排序的主要目的是为了方便查找、分析数......
  • 算法题技巧之“枚举右维护左“--套路详细讲解带例题和易懂代码(Python,C++)
    本文参考:灵茶山艾府-力扣(LeetCode)        分享丨【题单】常用数据结构(前缀和/差分/栈/队列/堆/字典树/并查集/树状数组/线段树)-力扣(LeetCode)    本文主要讲解关于”枚举右维护左“这个刷算法题的技巧,包括简单的原理讲解和两个简单的例题(之后我也会总......
  • 信奥赛一本通陈老师解题 1123:图像相似度
    ​【题目描述】给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。【输入】第一行包含两个整数m和n,表示图像的行数和列数,......
  • 信奥赛一本通陈老师解题 1128:图像模糊处理
    ​ 【题目描述】给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:1.四周最外侧的像素点灰度值不变;2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。【输入】第一行包含两个整数n和m,表示图像包含像素......
  • C语言典型例题54
    《C程序设计教程(第四版)——谭浩强》例题4.6用for语句实现1+2+3+4+……+100。代码://《C程序设计教程(第四版)——谭浩强》//例题4.6用for语句实现1+2+3+4+……+100。#include<stdio.h>intmain(){ intx=0; intsum=0; inti=0; for(i=1;i<=100;i++) { x=x......
  • 南沙区信奥赛CSP-J/S 陈老师解题:1350:【例4-11】最短网络(agrinet)
    ​ 【题目描述】农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。你将得到一......
  • 【高等数学1:洛必达法则】洛必达法则使用的隐蔽误区:例题剖析
    洛必达法则是求标准未定式极限的一种较好方法,而且不少学者提出了一些洛必达法则使用时的注意点。尽管如此,还有一种情况却很少提及,成为一个应用的隐蔽误区,如果不加注意而去滥用,往往会得出错误的结论。因此,本文从洛必达法则的基本概念出来,以一道经典例题说明洛必达使用的条......