当前位置: 首页 > news >正文

Luogu 1341 无序字母对 - 欧拉路径

Solution

找一条字典序最小的欧拉路径。

用 $multiset$ 存储领接表。

欧拉路径模板传送门


Code

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<set>
 5 using namespace std;
 6 
 7 const int N = 1e3 + 5;
 8 
 9 int n, up = 'z' - 'A' + 1;
10 int ans[N], tot, d[N], num;
11 
12 multiset<int> to[N];
13 
14 void dfs(int u) {
15     multiset<int> :: iterator i;
16     for (i = to[u].begin(); i != to[u].end(); i = to[u].begin()) {
17         int nt = *i;
18         to[nt].erase(to[nt].find(u));
19         to[u].erase(to[u].find(nt));
20         dfs(nt);
21     }
22     ans[++tot] = u;
23 }
24 
25 int main()
26 {
27     scanf("%d", &n);
28     for (int i = 1; i <= n; ++i) {
29         char s[3];
30         scanf("%s", s);
31         to[s[0] - 'A' + 1].insert(s[1] - 'A' + 1);
32         to[s[1] - 'A' + 1].insert(s[0] - 'A' + 1);
33         d[s[1] - 'A' + 1]++;
34         d[s[0] - 'A' + 1]++;
35     }
36     for (int i = 1; i <= up; ++i)
37         if (d[i] & 1)
38             num++;
39     if (num == 1 || num > 2)
40         return puts("No Solution"), 0;
41     if (num == 0) {
42         for (int i = 1; i <= up; ++i)
43             if (d[i]) {dfs(i); break;}
44     }
45     else 
46         for (int i = 1; i <= up; ++i)
47             if (d[i] && (d[i] & 1)) {dfs(i); break;}
48     for (int i = tot; i; i--) 
49         putchar(ans[i] + 'A' - 1);
50     puts("");
51 }
View Code

 

转载于:https://www.cnblogs.com/cychester/p/9729075.html

相关文章:

  • Hadoop HDFS 文件系统的存储哲学
  • 牛客国庆集训派对Day1-New Game!(几何+最短路)
  • 寻找最长回文字符串
  • JavaScript 中 this的指向
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • Java 里如何实现线程间通信
  • Django框架-AJAX
  • P1044 栈 洛谷(数论)(卡特兰数)
  • 矩阵运算
  • MySQL之架构与历史(一)
  • 函数指针
  • Django admin源码剖析
  • 第53节:Java当中的IO流(上)
  • linux下自动获取并安装软件包 apt-get 的命令介绍
  • [CF482B]Interesting Array
  • Android Studio:GIT提交项目到远程仓库
  • C++类中的特殊成员函数
  • docker python 配置
  • docker-consul
  • Invalidate和postInvalidate的区别
  • JS+CSS实现数字滚动
  • Js基础知识(一) - 变量
  • PHP 7 修改了什么呢 -- 2
  • React Transition Group -- Transition 组件
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Redis中的lru算法实现
  • Spring框架之我见(三)——IOC、AOP
  • 从tcpdump抓包看TCP/IP协议
  • 写给高年级小学生看的《Bash 指南》
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • # centos7下FFmpeg环境部署记录
  • #Java第九次作业--输入输出流和文件操作
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二)丶RabbitMQ的六大核心
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十)T检验-第一部分
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • ***利用Ms05002溢出找“肉鸡
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .Net 知识杂记
  • .net访问oracle数据库性能问题
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .net项目IIS、VS 附加进程调试
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • /boot 内存空间不够
  • ?
  • @EnableAsync和@Async开始异步任务支持
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解