题目大意
ABC教授是XYOI的负责人,有一天他竟然发现自己的计算机染上了一种不常见的病毒这种病毒的名字叫做ALPHABETVIRUS,当它发作的时候,它会将字母用其它的字母代替,但它不会将单词的顺序交换。
病毒将计算机中的所有文档都作了相对应的改变,很幸运,ABC教授的计算机上有一个字典,而我们都知识字典单词是按字母顺序排列的,当然,这个字典也被病毒改变了。因此,要利用字典原来的有序性,找到病毒替换字母的规律,再用以恢复其它文档。由于XYOI是不可缺少ABC的文件的,所以文档必须恢复。但是由于ABC教授有其它的更重要工作要完成,所以他希望你可以帮助他恢复文档,使得XYOI的工作可以继续。
ABC教授会提供感染病毒后的字典和他希望帮助恢复的字母组。
-输入
4 5
ab
abc
cb
bb
bk
bcak
-输出
cbak
(注意别输出成了cbad)
解
对比俩个字符串的第一个不同位,就可以得到一对字母间的关系。
然后类似拓扑排序的思想,确定字母的大小顺序。
如果有两个字母确定不了之间的大小关系…就属于无解。
代码
(写得很乱我都忘了我当时怎么写的了)
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<iostream>
using namespace std;
int ru[30], ss[30][30], a, k, len[5], ans[30], tot, In[30], in, cl, chuxian[30];
queue<int> Q;
char s[5][1000001];
void db(int aa, int bb){
int la = len[aa];
int lb = len[bb];
for(int i = 0; i < la && i < lb; ++i){
int<