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的更多相关文章

  1. 「CF1303C Perfect Keyboard」

    前置芝士 图的遍历:通过DFS或者BFS遍历全图. 前向星:用来存边,但是在本题用也可以用一个二维数组解决. 具体做法 先从判断YES和NO开始,可以发现如果一个字母与三个及以上不同的字母相邻时肯定是 ...

  2. Educational Codeforces Round 82 C. Perfect Keyboard

    Polycarp wants to assemble his own keyboard. Layouts with multiple rows are too complicated for him ...

  3. Codeforces1303C. Perfect Keyboard

    本题可以转换成图论来做,每两个相邻点连一条边,然后统计每一个点的degree,如果>=2说明有一个点要相邻三个点,不满足题意,然后找出每个degree<2的点,这些点可以作为一段的起点,然 ...

  4. 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 ...

  5. [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 ...

  6. 【题解】Educational Codeforces Round 82

    比较菜只有 A ~ E A.Erasing Zeroes 题目描述: 原题面 题目分析: 使得所有的 \(1\) 连续也就是所有的 \(1\) 中间的 \(0\) 全部去掉,也就是可以理解为第一个 \ ...

  7. 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:% ...

  8. hdu2369 Broken Keyboard(类似dfs)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=2369">http://acm.hdu.edu.cn/showproblem.php ...

  9. AOJ 0033 Ball【DFS】

    有一个筒,从A口可以放球,放进去的球可通过挡板DE使其掉进B管或C管里,现有带1-10标号的球按给定顺序从A口放入,问是否有一种控制挡板的策略可以使B管和C管中的球从下往上标号递增. 输入: 第一行输 ...

随机推荐

  1. tomcat 多端口 多容器 多域名 配置

    先强调一个原则: server下面可以有多个service,用于配置不同监听端口 service下面可以有多个Host,用于配置该端口下的不同域名 Host里可以包含多个Context,用于配置该端口 ...

  2. SpringCloud微服务:阿里开源组件Nacos,服务和配置管理

    源码地址:GitHub·点这里||GitEE·点这里 一.阿里微服务简介 1.基础描述 Alibaba-Cloud致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开 ...

  3. WebSocket协议分析

    WebSocket协议分析 1.什么是WebSocket协议 WebScoket协议是基于TCP协议建立的全双工通信,所谓的全双工通信就是双向同时通信. 2.WebSocket协议优点 WebSock ...

  4. kms在线激活windows和office

    本激活,只适用vol版本的windows系统和office 激活windows在windows中使用管理员方式打开cmd命令输入slmgr /skms chongking.com切换kms服务器地址为 ...

  5. 随着页面滚动,数字自动增大的jquery特效

    首先为了截出gif图,我下载了一个小工具 GifCam: https://www.appinn.com/gifcam/ 随着页面滚动,数字自动增大的jquery特效 主要就是依赖这个脚本script. ...

  6. Elasticsearch编程操作

    1.创建工程导入依赖 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>ela ...

  7. abp集成IdentityServer4和单点登录

    在abp开发的系统后,需要使用这个系统作单点登录,及其他项目登录账号依靠abp开发的系统.在官方文档上只找到作为登录服务Identity Server Integration,但是host项目却无法使 ...

  8. C#实现把String字符串转化为SQL语句中的In后接的参数

    实现把String字符串转化为In后可用参数代码: public string StringToList(string aa) { string bb1 = "("; if (!s ...

  9. BUUCTF 部分wp

    目录 Buuctf crypto 0x01传感器 提示是曼联,猜测为曼彻斯特密码 wp:https://www.xmsec.cc/manchester-encode/ cipher: 55555555 ...

  10. PHP0021:PHP COOKIE 设置修改删除