[洛谷P1341]无序字母对

题目大意:给一张无向图,找一条字典序最小的欧拉路径

题解:若图不连通或有两个以上的奇数点,则没有欧拉路径,可以$dfs$,在回溯时把这个节点加入答案

卡点:没有在回溯时加入答案,导致出现了欧拉路径没走环(少走了一段)

 

C++ Code:

#include <cstdio>
#include <cctype>
#include <algorithm>
#define maxn 60
int m, start = 52, ind[maxn];
int v[maxn], n, ret[256];
bool e[maxn][maxn];
char ans[maxn * maxn];int f[maxn];
int find(int x) {return x == f[x] ? x : (f[x] = find(f[x]));}void dfs(int u) {for (int i = 1; i <= n; i++) if (e[u][i]) {e[u][i] = e[i][u] = false;dfs(i);}ans[m--] = v[u];
}
int main() {scanf("%d", &m);for (int i = 'A'; i <= 'Z'; i++) v[++n] = i, ret[i] = n;for (int i = 'a'; i <= 'z'; i++) v[++n] = i, ret[i] = n;for (int i = 1; i <= n; i++) f[i] = i;for (int i = 0; i < m; i++) {char ch = getchar();while (!isalpha(ch)) ch = getchar();int a = ret[static_cast<int> (ch)], b;ch = getchar();while (!isalpha(ch)) ch = getchar();b = ret[static_cast<int> (ch)];start = std::min(start, std::min(a, b));e[a][b] = e[b][a] = true;ind[a]++, ind[b]++;f[find(a)] = find(b);}int cnt = 0;for (int i = 1; i <= n; i++) if (ind[i] && f[i] == i) cnt++;if (cnt > 1) {puts("No Solution");return 0;}cnt = 0;for (int i = 1; i <= n; i++) if (ind[i] & 1) {if (!cnt) start = i;cnt++;}if (cnt > 2) {puts("No Solution");return 0;}dfs(start);puts(ans);return 0;
}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/10014705.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

产品部门四大角色——PM/PD/UE/UI

按照产品从规划到最终成型的任务流方向&#xff0c;从抽象到具体、商业到技术的过程&#xff0c;涉及产品经理、产品设计师、用户体验师、视觉设计师四个角色。 PM&#xff1a;产品经理&#xff0c;俗称老大。一个产品&#xff0c;首先由PM来分析细分市场、目标客户的诉求&…

拉取远程分支_git clone切换分支步骤,代理设置,作者信息设置

1.克隆远程仓库git clone git地址2.查看所有分支git branch –a3.切换分支git checkout branchName4.查看当前所在分支git branch5.拉取代码git pull6.提交代码git add file/folder git commit -m comment git push可能遇到的问题&#xff1a;A.error: fatal: unable to acce…

[学习笔记]半平面交

一个直线把平面分成两部分&#xff0c;就是两个半平面 处理这两个平面的交的信息&#xff0c;就是半平面交 推荐&#xff1a; 计算几何之半平面交算法模板及应用 bzoj 2618 半平面交模板学习笔记 【总结】半平面交 可以用于求任意多边形交&#xff0c;任意多边形内核。 &#x…

Project计算项目进度

1.设立根节点 2.资源列表 3.资源成本 4.基准 在任务分配状况 视图里&#xff0c;添加“基线工时”“实际工时”“BCWS(计划&#xff09;”“ACWP(实际&#xff09;”“BCWP&#xff08;挣值&#xff09;”&#xff0c;“SV(>0 提前&#xff0c;<0 延后&#xff09;”、…

jquery动态绑定事件的方法_Jquery绑定事件及动画效果

绑定事件bind(type, data, fuc)one(type, data, fuc) //只执行一次常见事件类型名称含义blur失去焦点focus获得焦点load加载resize重置大小scroll滚动unload卸载click点击dblclick双击mousedown鼠标按下mouseup鼠标弹起mousemove鼠标移动mouseover鼠标悬停mouseout鼠标移走mous…

需求调研前的准备工作

1.需求调研前需要做哪些准备&#xff1f; 1.从各种渠道了解客户所在行业的行业信息&#xff1b; 2.向和对方有过业务接触的同事了解对方的信息如现哪些系统和业务流程、对方的管理组织结构是怎样的&#xff1b; 3.是否可以搜集到对方的一些文字情信息如业务单据、管理规范等。 …

实验 5 编写、调试具有多个段的

实验任务 &#xff08;1&#xff09; &#xff08;2&#xff09; &#xff08;3&#xff09; &#xff08;4&#xff09; 若将最后一条指令”end start“改为”end“&#xff0c;&#xff08;3&#xff09;中的程序仍然可以正常执行。 原因&#xff1a;如果不指明程序的入口&am…

hbuilderx的快捷键整理pdf_mac键盘快捷键详解,苹果电脑键盘快捷键图文教程

作为 Apple 最成熟的系统之一&#xff0c;macOS 已经成为许多人每天都在接触的生产力工具。为了帮助大家更好地了解 macOS 的生态魅力&#xff0c;我们整理了这份融合了文字图片和动图的mac键盘快捷键详解&#xff0c;希望能够帮助你掌握更多系统使用技巧。文章所有操作都基于 …

word插入图片显示不全

word插入图片&#xff0c;显示不全&#xff0c;只有部分。 调整步骤 图片尾部 光标定位到图片的尾部 单倍行距 右键&#xff0c;选择“段落”&#xff0c;行间距选择“单倍行距” 图片就完成显示了

理解 JavaScript 作用域

上一篇文章中分析了 JS 中的数据类型和变量。这一篇文章将分析作用域&#xff0c;以及回答上一篇文章中变量提升的原因。 什么是作用域 作用域是一套规则&#xff0c;保存着变量&#xff0c;等待被引擎所查找。 var a 1; console.log(a); // > 1 console.log(b); // >…

mysql行求和

SELECT 列1 列2 列3 …… 列N AS Total FROM 表 SELECT sum(列1 列2 列3 …… 列N) AS Total FROM 表 转载于:https://www.cnblogs.com/weilovehua/p/10024624.html

python安装后在哪里找_python安装后的目录在哪里

从官网下载python的安装包&#xff0c;安装过程中可选择装在C盘或D盘或者其他的磁盘。 如果忘记了安装在哪里&#xff0c;可以在命令行中使用以下命令 where python 会显示python的绝对路径 C:\Users\Administrator>where python C:\Users\Administrator\AppData\Local\Prog…

Axure原型设计导出到PDF文件

Axure 没有直接导出PDF文件的功能&#xff0c;可以通过Axure 的打印功能&#xff0c;选择PDF打印机&#xff0c;以间接的方式将原型设计导出到pdf文件里。 操作步骤 以Axure9为例 打印 Axure9---文件---打印 不要母版 预览 预览下效果&#xff0c;看下是否有不必要的内容 …

izoak028

离散数学 &#xff08;自考&#xff09; 【自考】计算机网络原理精讲(2018版)转载于:https://www.cnblogs.com/qianyindichang2/p/10025538.html

Word查找替换详细用法及通配符一览表

使用通配符 要查找“?”或者“*”&#xff0c;可输入“\?”和“\*”&#xff0c;\1\2\3依次匹配数对括号内容 查找(a)12(b) 替换\2XY\1 结果&#xff1a;bXYa ([.0-9]) [MG]B 匹配文件大小&#xff0c; 例1: 201 MB ,例2: 2.51 GB <(e*r)> 匹配“…

python pca降维_机器学习的降维打击

文章发布于公号【数智物语】 (ID&#xff1a;decision_engine)&#xff0c;关注公号不错过每一篇干货。来源 | SAMshare(id:SAMshare)作者 | samshare"本次主要讲解的内容就是特征降维&#xff0c;主要涉及PCA以及一些常见分析方法。"01Index一&#xff0c;PCA降维算…

什么样的项目是成功的?

项目成功的标准是什么&#xff1f; 项目范围控制住&#xff0c;成本没超标&#xff0c;质量达标&#xff0c;进度按计划&#xff0c;顺利验收。做到这些就是项目成功了吗&#xff1f; 答案显然是不一定&#xff01;&#xff01;! 有多少项目的成本、进度、目标都能够严格按照…

ng-notadd 0.10.1,基于 Angular7 和 material2 的中后台解决方案

更新内容修复 scss左侧导航栏美化修复导航栏 2px 间隔问题技术栈TypescriptAngularMaterial2rxjsGraphql相关链接项目地址DEMOng-notadd-mock-serverQuick startgit clone https://github.com/notadd/ng-notadd.gitcd ng-notaddnpm installnpm start# or use ng cling serve复制…

python需要什么包装_python学习之包装与授权

实现授权的关键点就是覆盖__getattr__()方法&#xff0c;在代码中包含一个对getattr()内建函数的调用。 特别调用getattr()以得到默认对象属性&#xff08;数据属性或者方法&#xff09;并返回它以便访问或调用。 特殊方法__getattr__()的工作方式是&#xff0c;当搜索一个属性…

参加技术培训前的辅导,选得对,学得好

最近几年&#xff0c;每年都会有人问我培训班的事情&#xff0c;我也有培训班经历&#xff0c;在软件行业工作了十多年&#xff0c;每次解答培训班的咨询我都很认真&#xff0c;也很高兴能帮到他人。 决定通过专栏的形式解答培训班常见问题&#xff0c;我把专栏取名“技术培训…