[CF1303C] Perfect Keyboard - DFS
Solution
根据原字符串建图,每个字符是一个点,相邻则连边
然后从每一个度数为 \(1\) 的点开始爆搜连通块,合法情况下应该是一条链
#include <bits/stdc++.h>
using namespace std;
#define int long long
int g[33][33],d[33],vis[33],fg=1;
vector <int> sta;
void dfs(int p) {
if(vis[p]) return;
vis[p]=1;
sta.push_back(p);
int flag=1;
for(int i=0;i<26;i++) {
if(vis[i]==0 && g[p][i]) {
if(flag) {
flag=0;
dfs(i);
}
else {
fg=0;
}
}
}
}
void solve(string str) {
sta.clear();
fg=1;
memset(g,0,sizeof g);
for(int i=1;i<str.size();i++) {
g[str[i]-'a'][str[i-1]-'a']=1;
g[str[i-1]-'a'][str[i]-'a']=1;
}
memset(d,0,sizeof d);
for(int i=0;i<26;i++) {
for(int j=0;j<26;j++) d[i]+=g[i][j];
}
memset(vis,0,sizeof vis);
for(int i=0;i<26;i++) {
if(d[i]<=1 && vis[i]==0) {
dfs(i);
}
}
if(sta.size()!=26) fg=0;
for(int i=0;i<26;i++) if(d[i]>2) fg=0;
if(fg) {
puts("YES");
for(int i=0;i<26;i++) cout<<(char)(sta[i]+'a');
cout<<endl;
}
else {
puts("NO");
}
}
signed main() {
int t;
cin>>t;
while(t--) {
string str;
cin>>str;
solve(str);
}
}
[CF1303C] Perfect Keyboard - DFS的更多相关文章
- 「CF1303C Perfect Keyboard」
前置芝士 图的遍历:通过DFS或者BFS遍历全图. 前向星:用来存边,但是在本题用也可以用一个二维数组解决. 具体做法 先从判断YES和NO开始,可以发现如果一个字母与三个及以上不同的字母相邻时肯定是 ...
- Educational Codeforces Round 82 C. Perfect Keyboard
Polycarp wants to assemble his own keyboard. Layouts with multiple rows are too complicated for him ...
- Codeforces1303C. Perfect Keyboard
本题可以转换成图论来做,每两个相邻点连一条边,然后统计每一个点的degree,如果>=2说明有一个点要相邻三个点,不满足题意,然后找出每个degree<2的点,这些点可以作为一段的起点,然 ...
- Educational Codeforces Round 82 (Rated for Div. 2) A-E代码(暂无记录题解)
A. Erasing Zeroes (模拟) #include<bits/stdc++.h> using namespace std; typedef long long ll; ; in ...
- [CF百场计划]#3 Educational Codeforces Round 82 (Rated for Div. 2)
A. Erasing Zeroes Description You are given a string \(s\). Each character is either 0 or 1. You wan ...
- 【题解】Educational Codeforces Round 82
比较菜只有 A ~ E A.Erasing Zeroes 题目描述: 原题面 题目分析: 使得所有的 \(1\) 连续也就是所有的 \(1\) 中间的 \(0\) 全部去掉,也就是可以理解为第一个 \ ...
- N - Broken Keyboard (a.k.a. Beiju Text)(DFS,链表)
N - Broken Keyboard (a.k.a. Beiju Text) Time Limit:1000MS Memory Limit:0KB 64bit IO Format:% ...
- hdu2369 Broken Keyboard(类似dfs)
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=2369">http://acm.hdu.edu.cn/showproblem.php ...
- AOJ 0033 Ball【DFS】
有一个筒,从A口可以放球,放进去的球可通过挡板DE使其掉进B管或C管里,现有带1-10标号的球按给定顺序从A口放入,问是否有一种控制挡板的策略可以使B管和C管中的球从下往上标号递增. 输入: 第一行输 ...
随机推荐
- bat脚本 定时删除备份的文件
删除 D:\yswbak 目录下rar类型 6天前的 文件 @echo off forfiles /p D:\yswbak /m *.rar /d - /c "cmd /c del @pat ...
- linux 删除文件 磁盘空间未释放
具体情况就是:删除了一个超大文件后,发现磁盘空间没有变化 原因:有进程正在使用这个文件,虽然我们从文件系统的目录结构上解除链接(unlink),然而文件是被 打开的(有一个进程正在使用),那么进程将仍 ...
- [Redis-CentOS7]Redis打开远程连接(十) Could not connect to Redis at 127.0.0.1:6379: Connection refused
通过网络无法访问Redis redis-cli 172.16.1.111 Could not connect to Redis at 127.0.0.1:6379: Connection refuse ...
- 4,ZooKeeper原理
1,ZooKeeper概述 ··· 作用: · ZooKeeper是为分布式应用程序提供的一个分布式开源协调框架,是Hadoop和Hbase的重要组件: · 主要用于解决分布式集群中应 ...
- HTML连载71-翻转菜单练习
一.翻转菜单练习 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- python3-cookbook笔记:第十章 模块与包
python3-cookbook中每个小节以问题.解决方案和讨论三个部分探讨了Python3在某类问题中的最优解决方式,或者说是探讨Python3本身的数据结构.函数.类等特性在某类问题上如何更好地使 ...
- Android布局管理器-从实例入手学习相对布局管理器的使用
场景 AndroidStudio跑起来第一个App时新手遇到的那些坑: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103797 ...
- Escape(反思与总结)
题目描述: BH is in a maze,the maze is a matrix,he wants to escape! Input: The input consists of multiple ...
- tensorflow安装问题
环境 windows7 开始的时候,打算在最新版本下安装tensorflow体验下,python是3.6 anaconda是最新的5.0.1 结果执行 pip3 install --upgrade ...
- 解决BitLocker反复提示恢复密钥正确而无法进入系统的问题
前一阵电脑因为装了grub,引导策略被改了.开Windows要求输入恢复密钥以进行恢复.我登陆过Microsoft账户所以在官网上找到了密钥并恢复了驱动器.但是进去提示"恢复密钥正确&quo ...