CF508D Tanya and Password(欧拉回路)
解析
之前模拟考过的一道题
把字符串当成前后缀之间的连边即可
注意即使图的度数符合要求,也可能由于不连通而无解,需要再特判一下
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
const int N=2e5+100;
ll read() {ll x=0,f=1;char c=getchar();while(!isdigit(c)) {if(c=='-')f=-1;c=getchar();}while(isdigit(c)) {x=x*10+(c^48);c=getchar();}return x*f;
}
int n,m;
int key=123;
struct node{int to,nxt;
}p[N<<1];
int fi[N],cnt;
inline void addline(int x,int y){p[++cnt]=(node){y,fi[x]};fi[x]=cnt;return;
}
int in[N],out[N];
int zhan[N],top;
char s[4];
void dfs(int x){for(int i=fi[x];~i;i=fi[x]){int to=p[i].to;fi[x]=p[i].nxt;dfs(to);}zhan[++top]=x;
}
int main(){//freopen("a.in","r",stdin);//freopen("a.out","w",stdout);memset(fi,-1,sizeof(fi));cnt=-1;n=read();for(int i=1;i<=n;i++){scanf(" %s",s+1);int a=s[1]*key+s[2],b=s[2]*123+s[3];in[b]++;out[a]++;addline(a,b);}int id(0),num(0);for(int i=1;i<=15252;i++){if(!in[i]&&!out[i]) continue;if(abs(out[i]-in[i])>1){printf("NO\n");return 0;}else if(out[i]>in[i]){num++;id=i;}else if(!id) id=i;}if(num>1){printf("NO\n");return 0;}dfs(id);if(top!=n+1) printf("NO\n");else{printf("YES\n");printf("%c%c",zhan[top]/key,zhan[top]%key);top--;while(top){putchar(zhan[top]%key);top--;}}return 0;
}
/**/
CF508D Tanya and Password(欧拉回路)相关推荐
- 寒假集训日志(二)——最小生成树,拓扑排序,欧拉回路,连通路
今天学的内容挺多的. (一)首先说最小生成树,两种算法: 1.Kruskal算法( 将边排序,然后再选,关键在于检查是否连通,使用并查集) 2.Prim算法(使用点集,有点类似与最短路的算法) 第一题 ...
- CodeForces Round #288 Div.2
A. Pasha and Pixels (水题 暴力) 题意: 有一个n×m的矩阵,最开始所有的格子都是白色的. 一个人按照某种顺序将格子涂成黑的,如果某个格子已经是黑的则忽略.在涂色的过程中如果出现 ...
- Android开发之第三方框架使用汇总
1. image loading 框架: 1.1 Glide1.2 Picasso1.3 后续更新... 2.网络框架: 2.1 xUtil32.2 OkHttp32.3 Retrofit2.4 后续 ...
- You must reset your password using ALTER USER statement before executing thi
第一次 安装好mysql 创建数据库的时候提示这个问题,百度了,自己的处理方法 就是第一次需要设置数据库的密码 ,把原始的数据库密码更改一下 更改密码的方法: mysql> SET PASSWO ...
- [模板][持续更新]欧拉回路与欧拉路径浅析
Luogu P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与 ...
- uoj 117 欧拉回路
1.判断是否为欧拉存在欧拉回路---裸的判断 欧拉回路就是看一笔能不能把途中所有的边跑完没得重复 对于无向边----建立双向边判断每个点的入度是否为2的倍数 1.1 对于有向边---建立单向边判断 ...
- redmine忘记username和password
环境: Ubuntu 13.10 bitnami-redmine-2.5.1-1-linux-x64-installer.run 用bitnami安装完redmine以后,有是否忘记了username ...
- MySQL登录时ERROR 1045:Access denied for user ‘root’@’localhost’ (using password: YES)
MySQL登录时ERROR 1045错误 win10_x64系统中登录MySQL时出现1045错误 错误描述: ERROR 1045:Access denied for user 'root'@'lo ...
- 停止Password Manager Agent服务导致应用程序启动缓慢
在一个实施环境中,部署了Password Manager用来实现单点登录功能,但是由于Password Manager的提示基本都是以英文为主,而且配置也比较麻烦,普通用户看见会比较影响用户体验,所以 ...
最新文章
- python操作系统-Python与操作系统有关的模块
- 2020 年的第 1 个重磅彩蛋!
- Excel中配置VBA的工作环境
- iOS程序员也要学点算法吧 简单排序之插入排序
- 使用Prometheus监控Linux系统各项指标
- bzoj 3232 01分数规划+最大权封闭子图判定
- MyBatisPlus分页
- 设计模式(1)单例模式
- 历届奥斯卡获奖影片(1971-2014年)
- PCB集成元件封装库下载推荐
- STM32 vcap引脚
- 彻底理解connection timeout
- 深入剖析Windows补丁
- AWS ARN 学习
- Jinja2安装与基本API用法
- 使用 微信JS-SDK 拍照 或者获取 相册 图片并展示
- OpenGL 开始学习指南
- led显示屏p10参数设置_如何看P10显示屏参数
- 严格执行8小时工作制、双休,会怎样?
- Yan LeCun会是AI界的居里夫人吗?
热门文章
- 【干货】机器学习中样本比例不平衡的处理方法
- python根据地址查看变量名_tensorflow创建变量以及根据名称查找变量
- 超详细图解!【MySQL进阶篇】MySQL索引原理
- egg前面加什么_国威说阀:阀门前面为什么加国标美标日标之类的?
- fb静态区域_fb 静态数据
- as本地仓库更改_将gitee仓库连接GitHub Desktop。新建更改仓库并上传至gitee。
- c++11 string u8_深入理解C++11:C++11新
- mac 配置php和mysql_Mac下配置PHP+MySql环境
- future.cancel不能关闭线程_多线程与高并发笔记
- 数据结构——二叉树的递归算法