【题目描述】

一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改变顺序,也不会增加和删除字母。

现在怎么恢复原来的文档呢!小y很聪明,他在其他没有感染病毒的机器上,生成了一个由若干单词构成的字典,字典中的单词是按照字母顺序排列的,他把这个文件拷贝到自己的机器里,故意让它感染上病毒,他想利用这个字典文件原来的有序性,找到病毒替换字母的规律,再用来恢复其它文档。

现在你的任务是:告诉你被病毒感染了的字典,要你恢复一个字母串。

【输入】

第一行为整数K(≤50000),表示字典中的单词个数。

以下K行,是被病毒感染了的字典,每行一个单词。

最后一行是需要你恢复的一串字母。

所有字母均为小写。

【输出】

输出仅一行,为恢复后的一串字母。当然也有可能出现字典不完整、甚至字典是错的情况,这时请输出一个0。

【输入样例】

6
cebdbac
cac
ecd
dca
aba
bac
cedab

【输出样例】

abcde

代码:

#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
#define MAXN 50005
using namespace std;int n , cnt ;
int in[MAXN] , ans[MAXN] ;
bool flag ;
char have[MAXN] ;
string s[MAXN] , g ;
vector <int> G[MAXN] ;
map <char , int > T ;void Topol() {int count = 0 ;int k = 0 ;queue <int> q ;for( int i = 1 ; i <= cnt ; ++ i )if( !in[i] ) {k ++ ;q.push(i) ;}if( k != 1 ) {//拓扑序唯一flag = 1 ;return ;}while( !q.empty() ) {int sum = 0 ;int x = q.front() ;q.pop() ;count ++ ;ans[x] = count ;for( int i = 0 ; i < G[x].size() ; ++ i ) {int s = G[x][i] ;in[s] -- ;if( !in[s] ) {q.push(s); sum ++ ;}}if( sum > 1  ) {//保证拓扑序唯一flag = 1 ;return ;}}if( count != cnt )//拓扑跑完了的flag = 1 ;return ;
}int main() {scanf("%d", &n );for( int i = 1 ; i <= n ; ++i )cin >> s[i] ;cin >> g ;for( int i = 2 ; i <= n ; ++ i ) {for( int j = 0 ; j < min( s[i].length() , s[i-1].length() ) ; ++j ) {if( !T[s[i][j]] ) {//map存储cnt ++ ;T[s[i][j]] = cnt ;have[cnt] = s[i][j] ;//记录出现了的字母}if( !T[s[i-1][j]] ) {cnt ++ ;T[s[i-1][j]] = cnt ;have[cnt] = s[i-1][j] ;}if( s[i-1][j] != s[i][j] ) {//连边int a = T[s[i-1][j]] ;int b = T[s[i][j]] ;G[a].push_back(b) ;in[b] ++ ; break ;}}}Topol();if( flag ) {printf("0");return 0;}sort( have+1 , have+cnt+1 );//排序for( int i = 0 ; i < g.length() ; ++ i ) {//是否有没出现的字母int now = T[g[i]];if( now == 0 ) {printf("0");return 0;}}for( int i = 0 ; i < g.length() ; ++ i ) {//找正确的字母int now = T[g[i]];int rig = ans[now] ;printf("%c", have[rig] );}
}

1396:病毒(virus)相关推荐

  1. 病毒 (virus)

    病毒 (virus) 题目描述 题目描述 有一天,小y 突然发现自己的计算机感染了一种病毒! 还好,小y 发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改变顺序,也不会增加和删除字母 ...

  2. 信奥一本通 1396:病毒(virus)

    [题目描述] 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改变顺序,也不会增加和删除字母. 现在怎么恢复原来的文档呢!小y ...

  3. 拓扑排序 病毒virus

    [问题描述] 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改变顺序,也不会增加和删除字母. 现在怎么恢复原来的文档呢!小y ...

  4. linux 病毒virus(text 逆向、PLT\GOT HOOK)

    免责声明: 源码仅供学习,非法使用与作者无关!!! 源码仅供学习,非法使用与作者无关!!! 源码仅供学习,非法使用与作者无关!!! 随机感染目录下所有 elf 文件: char *dirs[4] = ...

  5. 病毒virus - 拓扑排序

    题目描述 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改变顺序,也不会增加和删除字母. 现在怎么恢复原来的文档呢!小y很聪 ...

  6. 病毒virus(拓扑排序)

    ~目录啊~ 题目 思路 Code 题目 描述 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改变顺序,也不会增加和删除字母. ...

  7. C++解题报告:病毒(virus)——拓扑排序

    题目描述 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改变顺序,也不会增加和删除字母. 现在怎么恢复原来的文档呢!小y很聪 ...

  8. 手机 html病毒,virus.html.url 这个是误报?还是病毒木马?求大神解答

    那是误报,我把文件提交到在线查毒网站,结果如下: VirSCAN.org Scanned Report : Scanned time   : 2015-01-18 22:36:30 Scanner r ...

  9. 病毒(virus) 题解 - 拓扑排序

    题目 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改变顺序,也不会增加和删除字母. 现在怎么恢复原来的文档呢!小y很聪明, ...

最新文章

  1. C++_STL——queue(and priority_queue)
  2. 算力网络 — 技术架构
  3. linux下weblogic版本,Linux下weblogic10.3.6(jar)版本安装详解
  4. 问题 1046: [编程入门]自定义函数之数字后移
  5. mysql表名怎么拼接_mysql必知必会(一)
  6. c语言存为pdf,c语言10年保存(免费).pdf
  7. 用keil编译的时候遇到不能编译也不能build
  8. android mmkv使用_锦囊篇|一文摸懂SharedPreferences和MMKV(一)
  9. 模拟电子技术基础(第四版)教材 电子版
  10. 将R Markdown文档变成互动体验
  11. 免费下载天地图全国基础地理信息矢量数据的一种方法
  12. 中公计算机岗位知识与技能,知识与技能的分类
  13. Dell台式计算机BIOS放电,戴尔bios设置电池修复 笔记本电脑电池bios设置图解方法...
  14. 移动硬盘在Mac上无法拷贝或删除文件的解决办法
  15. gateway跨域问题解决方法
  16. 流程图中省略的图表怎么表示_如何将流程图和图表添加到Google文档或幻灯片
  17. DFS和BFS求字符串的所有非空子集———Java
  18. 1.oracle RAC11G 对单机ADG搭建详细文档
  19. Nextchip系列芯片资料收集----RX/ISP/AHD使用场景
  20. 襄阳市2011年6月高一数学统考解答

热门文章

  1. 变形金刚5的口碑崩盘,教会了我什么
  2. LO Frequency Plan
  3. Java从小兵到指挥官领兵作战—线程高并发扫盲篇
  4. LaTeX-如何使用Overleaf撰写论文
  5. IDEA编写SQL语句没有提示
  6. 909422229_腾讯云域名备案教程一
  7. 【濡白的C语言】初学者-从零开始-2(常量,一维数组,转义字符)
  8. 机器学习 —— 支持向量机简单入门
  9. 知微传感Dkam系列3D相机SDK例程篇:获取内外参
  10. YOLOv4目标检测实战:中国交通标志识别