欧拉路与欧拉回路(模板)
欧拉路得判别法:
欧拉回路:我们先记录一下所有点得度数,然后拿并查集判断一下连通性,如果有解得话,我们从奇数个得点开始遍历,一直遍历到不能遍历为止,然后逆序输出得路径就是欧拉回路
P7771 【模板】欧拉路径
题目描述
求有向图字典序最小的欧拉路径。
输入格式
第一行两个整数 n , m n,m n,m 表示有向图的点数和边数。
接下来 m m m 行每行两个整数 u , v u,v u,v 表示存在一条 u → v u\to v u→v 的有向边。
输出格式
如果不存在欧拉路径,输出一行 No
。
否则输出一行 m + 1 m+1 m+1 个数字,表示字典序最小的欧拉路径。
输入输出样例 #1
输入 #1
4 6
1 3
2 1
4 2
3 3
1 2
3 4
输出 #1
1 2 1 3 3 4 2
输入输出样例 #2
输入 #2
5 5
1 2
3 5
4 3
3 4
2 3
输出 #2
1 2 3 4 3 5
输入输出样例 #3
输入 #3
4 3
1 2
1 3
1 4
输出 #3
No
说明/提示
对于 50 % 50\% 50% 的数据, n , m ≤ 1 0 3 n,m\leq 10^3 n,m≤103。
对于 100 % 100\% 100% 的数据, 1 ≤ u , v ≤ n ≤ 1 0 5 1\leq u,v\leq n\leq 10^5 1≤u,v≤n≤105, m ≤ 2 × 1 0 5 m\leq 2\times 10^5 m≤2×105。
保证将有向边视为无向边后图连通。
本题的数据生成器:
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
typedef unsigned long long ull;
#define N 100005
#define For(i,x,y)for(i=x;i<=(y);i++)
bool bo[N];
queue<int>p,q;
ull R=GetTickCount();
int deg[N][2],dep[N],fa[N];
inline int Rand(int _,int __)
{R^=R<<13;R^=R>>7;R^=R<<17;return R%(__-_+1)+_;
}
int find(int p)
{if(p!=fa[p])fa[p]=find(fa[p]);return fa[p];
}
inline void unite(int p,int q)
{p=find(p),q=find(q);if(p==q)return;if(dep[p]<dep[q])fa[p]=q;else fa[q]=p;if(dep[p]==dep[q])dep[p]++;
}
int main()
{freopen("P7771.in","w",stdout);int n=Rand(1,100000),m=Rand(190000,200000),i,u,v;cout<<n<<' '<<m;For(i,1,n)fa[i]=i;For(i,1,m>>1){u=Rand(1,n),v=Rand(1,n);cout<<endl<<u<<' '<<v;unite(u,v);deg[u][0]++;deg[v][1]++;}m-=m>>1;For(i,1,n)if(deg[i][0]<deg[i][1])p.push(i);else if(deg[i][0]>deg[i][1])q.push(i);while(m){if(p.empty()||q.empty())break;u=p.front();v=q.front();p.pop();q.pop();unite(u,v);cout<<endl<<u<<' '<<v;deg[u][0]++;deg[v][1]++;if(deg[u][0]<deg[u][1])p.push(u);if(deg[v][0]>deg[v][1])q.push(v);m--;}For(i,1,n-1)if(find(i)!=find(n)){cout<<endl<<n<<' '<<i<<endl<<i<<' '<<n;m-=2;unite(n,i);}if(m<2)while(1);while(m>Rand(0,1)){u=Rand(1,n);cout<<endl<<u<<' '<<u;m--;}if(m)cout<<endl<<Rand(1,n)<<' '<<Rand(1,n);return 0;
}
注意这题是有向图,且题目保证了连通性
AC代码:
#include<bits/stdc++.h>using namespace std;typedef long long ll;
typedef pair<int, int>PII;
const int N = 1e6 + 10;
const int MOD = 998244353;
const int INF = 0X3F3F3F3F;
const int dx[] = {-1, 1, 0, 0, -1, -1, +1, +1};
const int dy[] = {0, 0, -1, 1, -1, +1, -1, +1};
const int M = 998244353;int inp[N], out[N];//入出度vector<int>ed[N];
stack<int>st;//记录路径
//有向图
int del[N];//记录下标,为了避免重复访问
void dfs(int now)
{for(int i = del[now]; i < ed[now].size(); i = del[now]){del[now] = i + 1;//防止重复遍历dfs(ed[now][i]);}st.push(now);
}
int main()
{int n, m;cin >> n >> m;for(int i = 1; i <= m; i ++){int u, v;cin >> u >> v;ed[u].push_back(v);out[u] ++;inp[v] ++;}//判断是否存在欧拉路径(一笔画)int f = 0;int c1 = 0, c2 = 0;int s = 1;//起点for(int i = 1; i <= n; i ++){sort(ed[i].begin(), ed[i].end());//拍一下序,方便得到最小字典序if(out[i] != inp[i])//有相同,如果没有相同就以1为起点即可{f = 1;if(out[i] - inp[i] == 1) s = i, c1 ++;//出度比入度多1,就是起点else if(inp[i] - out[i] == 1) c2 ++;else return cout << "No" << endl, 0;//学到了,还能这样返回}}if(f && !(c1 == c2 && c1 == 1)) {return cout << "No" << endl, 0;}dfs(s);while(st.size()){cout << st.top() << ' ';st.pop();}cout << endl;return 0;
}
相关文章:
欧拉路与欧拉回路(模板)
欧拉路得判别法: 欧拉回路:我们先记录一下所有点得度数,然后拿并查集判断一下连通性,如果有解得话,我们从奇数个得点开始遍历,一直遍历到不能遍历为止,然后逆序输出得路径就是欧拉回路 P7771 【…...
HttpServletResponse的理解
HttpServletResponse 是 Java Servlet API 提供的一个接口 常用方法 方法用途setContentType(String type)设置响应内容类型(如 "application/json"、"text/html")setStatus(int sc)设置响应状态码(如 200、404&#x…...
用一张网记住局域网核心概念:从拓扑结构到传输介质的具象化理解
标题: 用一张网记住局域网核心概念:从拓扑结构到传输介质的具象化理解 摘要: 本文通过"一张网"的类比,将计算机网络中抽象的局域网技术概念转化为日常生活中可感知的网结与绳子模型,帮助读者轻松理解网络拓…...
Linux 进程控制 基础IO
Linux 进程控制学习笔记 本节重点 学习进程创建:fork() / vfork()学习进程等待学习进程程序替换:exec 函数族,微型 shell 实现原理学习进程终止:认识 $? 一、进程创建 1. fork() 函数初识 在 Linux 中,fork() 函…...
三、Hive DDL数据库操作
在 Apache Hive 中,数据库 (Database),有时也被称为模式 (Schema),是组织和管理 表及其他对象的基本命名空间单元。熟练掌握数据库层面的数据定义语言 (DDL) 操作,是构建清晰、有序的 Hive 数据仓库的第一步。本篇笔记将详细梳理 …...
C++ string初始化、string赋值操作、string拼接操作
以下介绍了string的六种定义方式,还有很多,这个只是简单举例 #include<iostream>using namespace std;int main() {//1 无参构造string s1;cout << s1 << endl;//2 初始化构造string s2 ({h, h, l, l, o});cout << s2 <<…...
java.util.Timer
知识点详细说明 java.util.Timer 是Java早期提供的定时任务调度工具,用于在指定延迟后或按固定间隔执行任务。以下是其核心知识点: 1. 核心组成 Timer类:负责调度任务,内部维护一个任务队列和后台线程。TimerTask类:抽象类,需继承并实现run()方法定义任务逻辑。2. 核心方…...
SQlite数据库
介绍 基本信息:是一款轻量级的嵌入式关系型数据库管理系统。 主要特点:SQLite的源码是C语言,其源代码完全开发,SQLite第一个Alpha版本诞生于2000年5月,他是一个轻量级的嵌入式数据库。零配置,无需安装和配…...
什么是 ANR 如何避免它
一、什么是 ANR? ANR(Application Not Responding) 是 Android 系统在应用程序主线程(UI 线程)被阻塞超过一定时间后触发的错误机制。此时系统会弹出一个对话框提示用户“应用无响应”,用户可以选择等待或强…...
当虚拟吞噬现实——《GTA6》结合技术
标题:当虚拟吞噬现实——《GTA6》的万言书:一部数字文明的启示录 (万字深度解析,拆解技术、叙事与社会学的三重革命) 一、序章:游戏史的奇点时刻 1. 从像素暴动到文明模拟:G…...
pandas读取pymysql和解析excel的一系列问题(版本不匹配)
pandas读取pymysql和解析excel的一系列问题,大部分都是版本不匹配导致的 尤其是pandas,numpy,pymysql,openpyxl不匹配导致 from sqlalchemy import create_engine import numpy as np import pandas as pd conncreate_engine("mysqlpymysql://user:passhost:3…...
【安装配置教程】ubuntu安装配置Kodbox
目录 一、引言 二、环境配置 1. 服务器配置 2. 必备组件 三、安装基础环境 1. 安装 PHP 8.1 及扩展 2. 安装 MySQL 数据库 3.安装 Redis(可选,提升缓存性能) 4. 配置nginx文件 4.1. 创建 Kodbox 站点目录 4.2. 编写 Ng…...
模型过拟合是什么?
模型过拟合的详细解析 一、定义与本质 过拟合(Overfitting)是机器学习与统计学中的核心问题,指模型在训练数据上表现优异,但在未见过的新数据(如测试集或实际应用数据)上泛化能力显著下降的现象。其本质在于模型过度捕捉了训练数据中的噪声、随机波动或非典型细节,而非…...
服务器mysql连接我碰到的错误
搞了2个下午,总算成功了 我在服务器上使用docker部署了java项目与mysql,但mysql连接一直出现问题 1.首先,我使用的是localhost连接,心想反正都在服务器上吧。 jdbc:mysql://localhost:3306/fly-bird?useSSLfalse&serverTime…...
数电课设·交通信号灯(Quartus Ⅱ)
远书归梦两悠悠,只有空床敌素秋。 阶下青苔与红树,雨中寥落月中愁。 ————《端居》 【唐】 李商隐 目录 交通信号灯 要点剖析: 端口说明: 代码展示:&…...
单片机-STM32部分:13、PWM
飞书文档https://x509p6c8to.feishu.cn/wiki/NjhuwbVP7iaEOikVK95cmJNLnWf PWM(Pulse Width Modulation)脉冲宽度调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。它是把每一脉冲宽度均相等的脉冲列作为PWM波形&am…...
HTTP 错误状态码以及常用解决方案
以下是常见 HTTP 错误状态码及其解决方案的对比表格,按客户端(4xx)和服务端(5xx)分类: HTTP 错误码对比表 一、客户端错误(4xx) 状态码含义常见原因解决方案400Bad Request请求参…...
巧用promise.race实现nrm镜像源切换----nbsl
今天是母亲节祝全天的母亲节日快乐奥 引言 在复习Promise知识点时,发现Promise.race在实际开发中应用较少,于是深入思考了它的应用场景。最近使用nrm(npm镜像源切换工具)时,想到每次都需要手动切换镜像源来测试哪个更…...
Python基础语法(中)
顺序语句 默认情况下,Python的代码执行顺序是从上往下执行的。 形如下面这样的代码,执行的结果只能是123,而不是321 print(1) print(2) print(3) 条件语句 Python 中使用 if else 关键字表示条件语句 (1)if if e…...
【Part 2安卓原生360°VR播放器开发实战】第四节|安卓VR播放器性能优化与设备适配
《VR 360全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360全景视频制作与优化,以及高分辨率视频性能优化等实战技巧。 📝 希望通过这个专栏&am…...
java笔记06
TreeMap的基本使用 TreeMapTreeMap 跟 TreeSet 底层原理一样,都是红黑树结构的。由键决定特性:不重复、无索引、可排序可排序:对键进行排序。注意:默认按照键的从小到大进行排序,也可以自己规定键的排序规则 代码书写…...
Problem E: 实现冒泡排序(内存优化)
1.题目描述 输入任意顺序的整数序列,输出结果为从小到大的排序结果 2.输入描述 输入一个整数序列,整数之间用空格隔开,输入完最后一个整数,回车 3.输出描述 从小到大的排序结果 4.样例 提示:注意,主…...
大模型对时尚穿搭体验的革新与重塑
在大模型深度介入时尚穿搭领域后,人们的穿搭体验迎来了前所未有的变革。它不再局限于单纯提供搭配方案,而是全方位渗透进时尚穿搭的各个环节,从决策过程到实际穿着感受,都在悄然改变着人们与时尚互动的方式。 打破信息壁垒&#…...
第6讲、全面拆解Encoder、Decoder内部模块
全面拆解 Transformer 架构:Encoder、Decoder 内部模块解析(附流程图小测验) 关键词:Transformer、Encoder、Decoder、Self-Attention、Masked Attention、位置编码、残差连接、多头注意力机制 Transformer 自 2017 年诞生以来&am…...
Linux电脑本机使用小皮面板集成环境开发调试WEB项目
开发调试WEB项目,有时开发环境配置繁琐,可以使用小皮面板集成环境。 小皮面板官网: https://www.xp.cn/1.可以使用小皮面板安装脚本一键安装。登陆小皮面板管理后台 2.在“软件商店”使用LNMP一键部署集成环境。 3.添加网站,本…...
数据仓库Hive
1.数据仓库 1.1数据仓库的概念 数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。 面向主题。操作型数据库的数据组织面向事务处理任务,而数据仓库中的数据按照一定的…...
嵌入式学习笔记 - STM32 ADC,多重转换,内部参考电压,
一 多个ADC器件,多重转换速率 每个型号MCU通常由多个ADC器件,比如STM32F4有三个ADC器件,每个ADC器件有一个最大转换速率,一般为25Mhz,即一个ADC器件每秒最多转换25M次,两次转换之间需要有时间间隔…...
精读计算机体系结构基础 第三章 特权指令系统
3. 1 特权指令系统简介 想象一下,计算机就像一个大楼,而这个大楼有很多不同的楼层。每个楼层都有不同的功能和使用者。最上面的楼层是应用层,那里住着各种各样的应用程序,比如你用来写作的文字处理软件、用来浏览网页的浏览器等等…...
库室多功能控制器
应急供电保障 内置智能备电系统,市电中断时即刻无缝切换,为设备持续稳定供电,确保关键场景用电无忧。 超高性价比 集门禁、报警、环控等专业功能于一体,相比同类产品,以更优的价格提供更全面、更强大的解决方…...
使用FastAPI和React以及MongoDB构建全栈Web应用07 FastAPI实现经典三层架构
一、单文件简单实现 1.1 开发用户增删改查接口 main.py from fastapi import FastAPI, Request, Query, HTTPException from fastapi.responses import JSONResponse from motor.motor_asyncio import AsyncIOMotorClient from pydantic import BaseModel from bson import …...
《设计模式之禅》笔记
:::info 💡 根据 遗忘曲线:如果没有记录和回顾,6天后便会忘记75%的内容 读书笔记正是帮助你记录和回顾的工具,不必拘泥于形式,其核心是:记录、翻看、思考::: 书名设计模式之禅作者秦小波状态已读完简介深刻…...
JavaScript 循环语句全解析:选择最适合的遍历方式
循环是编程中处理重复任务的核心工具。JavaScript 提供了多种循环语句,每种都有其适用场景和独特优势。本文将深入解析 JavaScript 的 6 种核心循环语句,通过实际示例帮助你精准选择合适的循环方案。 一、基础循环三剑客 1. for 循环 经典索引控制 ja…...
远程服务器pycharm运行tensorboard显示训练轮次图
本文仅针对远程服务器的情况 首先在远程服务器端 首先打开xshell,然后激活自己的虚拟环境 baekee这是我的! conda activate baekee然后cd进去你运行的文件所在的目录 cd /tmp/pycharm_project_732这个项目也是我的! 然后一个很重要的事情…...
Nginx 使用 Keepalived 搭建 nginx 高可用
一、环境准备 两台装有 nginx 的 CentOS 虚拟机。 [rootnginx1 ~]# echo "192.168.40.81 say Hello" > /usr/local/nginx/html/index.html [rootnginx2 ~]# echo "192.168.40.82 say Hello" > /usr/local/nginx/html/index.html 二、原理 Keepaliv…...
A1062 PAT甲级JAVA题解 Talent and Virtue
About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about peoples talent and virtue. According to his theory, a man being outstanding in both talent and virtue must be a "sage(圣人)"…...
数据指标和数据标签
数据指标和数据标签是数据管理与分析中的两个重要概念,它们在用途、形式和应用场景上有显著区别。以下是两者的详细对比: 1. 核心定义 维度数据指标(Data Metrics)数据标签(Data Tags/Labels)定义量化衡量…...
常见的排序算法(Java版)简单易懂好上手!!
排序 “排序”顾名思义就是把乱序的变成有序的,就像我们玩斗地主这种牌类游戏时,我们拿到牌都会将牌给排序一下,更好的在对局中方便思考和观察,我们排序算法也亦是如此。 文章目录 排序一、冒泡排序二、选择排序三、插入排序四、…...
用统计零花钱的例子解释:Shuffle 是啥?
举个栗子 🌰:统计全班同学的零花钱总和 假设你是班长,全班有 4个小组,每个小组记录了自己的零花钱情况: 第1组:张三(5元)、李四(3元)、张三(2元) 第2组:王五(4元)、张三(1元)、李四(2元) …...
Kafka topic 中的 partition 数据倾斜问题
在 Kafka 中,如果一个 Topic 有多个 Partition,但这些 Partition 中的消息数量或流量分布不均衡,就会出现 数据倾斜(Data Skew) 的问题。 ✅ 什么是数据倾斜? 数据倾斜指的是: 某些 Partitio…...
Python基础总结(十)之函数
Python函数 函数是Python中也是非常重要的,函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用该函数。 一、函数的定义 函数的定义要使用def关键字,def后面紧跟函数名,缩进的为函数的代码…...
macOS 15 (Sequoia) 解除Gatekeeper限制
macOS 15 (Sequoia) 解除Gatekeeper限制指南 问题描述 在macOS 15中执行sudo spctl --global-disable命令后,系统提示: Globally disabling the assessment system needs to be confirmed in System Settings 但隐私与安全性界面未显示"任何来源&…...
【Flask开发踩坑实录】pip 安装报错:“No matching distribution found” 的根本原因及解决方案!
关键词:pip 报错、镜像源问题、flask-socketio、Python开发环境、安装失败 作者:未名编程 | 更新时间:2025.05.11 📌 引言:一场莫名其妙的 pip 安装失败 最近在开发一个基于 Flask 的图像检索网站时&#…...
50.辐射抗扰RS和传导抗扰CS测试环境和干扰特征分析
辐射抗扰RS和传到抗扰CS测试环境和干扰特征分析 1. 辐射抗扰RS2. 传导抗扰CS 1. 辐射抗扰RS 辐射抗扰RS考察对外界电磁场干扰得抗扰能力,测试频段为80MHz~2000MHz,用1KHz得正弦波进行调幅,在电波暗室内进行。测试标准:IEC 61000-…...
零基础玩转sqlmap - 从入门到摸清数据库
sqlmap 包下载链接:https://pan.quark.cn/s/a6ab2586f77e 基本操作 最简单的用法:sqlmap -u "网址" - 直接测试这个网址有没有SQL注入漏洞 带参数的测试:如果网址后面有参数,比如 id1,sqlmap会自动检测 指…...
AI面经总结-试读
写在前面 该面经于2022年秋招上岸后耗时一个半月整理完毕,目前涵盖Python、基础理论、分类与聚类、降维、支持向量机SVM、贝叶斯|决策树、KNN、Boosting&Bagging、回归、代价函数与损失函数、激活函数、优化函数、正则优化、初始化与归一化、卷积、池化、传统图…...
python打卡day22@浙大疏锦行
复习日 仔细回顾一下之前21天的内容,没跟上进度的同学补一下进度。 作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 一、数据预处理 import pandas as pd import numpy as np import matplo…...
网络安全设备配置与管理-实验5-p150虚拟防火墙配置
实验5-p150虚拟防火墙配置 做不出来可以把项目删掉再新建。 实验六多加几步配置静态路由表就行。 文章目录 实验5-p150虚拟防火墙配置1. 实验目的2. 实验任务3. 实验设备4. 实验拓扑图和设备接口5. 实验命令与步骤1. 连线与配置2. 实验验证 思考题 1. 实验目的 通过该实验掌握…...
数值运算的误差估计
数值运算的误差估计 设两个近似数 x 1 ∗ x_1^* x1∗与 x 2 ∗ x_2^* x2∗的误差限分别为 ε ( x 1 ∗ ) \varepsilon(x_{1}^{*}) ε(x1∗)和 ε ( x 2 ∗ ) \varepsilon(x_{2}^{*}) ε(x2∗) 误差限满足一下运算法则: 和差运算的误差限: 设 y …...
HCIP-BGP实验一
一:拓扑图 二:需求分析: 保证R1-R5的环回地址相互能够通讯。 分析; 1.IP的配置 2.R2-R4完成IGP配置,配置OSPF 3.完成BGP配置。 4.优化配置,包括下一跳的选择,IBGP对等体建邻的IP地址。 三…...
linux内核pinctrl/gpio子系统驱动笔记
目录 一、简单介绍二、主要源码文件和目录gpio子系统pinctrl子系统两个子系统之间的关系设备树例子 三、主要的数据结构gpio子系统pinctrl子系统 四、驱动初始化流程五、难点说明 一、简单介绍 GPIO子系统: Linux GPIO子系统是Linux内核中负责处理GPIO(通用输入输出…...