题干:

Fox Ciel is going to publish a paper on FOCS (Foxes Operated Computer Systems, pronounce: "Fox"). She heard a rumor: the authors list on the paper is always sorted in the lexicographical order.

After checking some examples, she found out that sometimes it wasn't true. On some papers authors' names weren't sorted in lexicographical order in normal sense. But it was always true that after some modification of the order of letters in alphabet, the order of authors becomes lexicographical!

She wants to know, if there exists an order of letters in Latin alphabet such that the names on the paper she is submitting are following in the lexicographical order. If so, you should find out any such order.

Lexicographical order is defined in following way. When we compare s and t, first we find the leftmost position with differing characters: si ≠ ti. If there is no such position (i. e. s is a prefix of t or vice versa) the shortest string is less. Otherwise, we compare characters si and ti according to their order in alphabet.

Input

The first line contains an integer n (1 ≤ n ≤ 100): number of names.

Each of the following n lines contain one string namei (1 ≤ |namei| ≤ 100), the i-th name. Each name contains only lowercase Latin letters. All names are different.

Output

If there exists such order of letters that the given names are sorted lexicographically, output any such order as a permutation of characters 'a'–'z' (i. e. first output the first letter of the modified alphabet, then the second, and so on).

Otherwise output a single word "Impossible" (without quotes).

Examples

Input

3
rivest
shamir
adleman

Output

bcdefghijklmnopqrsatuvwxyz

Input

10
tourist
petr
wjmzbmr
yeputons
vepifanov
scottwu
oooooooooooooooo
subscriber
rowdark
tankengineer

Output

Impossible

Input

10
petr
egor
endagorion
feferivan
ilovetanyaromanova
kostka
dmitriyh
maratsnowbear
bredorjaguarturnik
cgyforever

Output

aghjlnopefikdmbcqrstuvwxyz

Input

7
car
care
careful
carefully
becarefuldontforgetsomething
otherwiseyouwillbehacked
goodluck

Output

acbdefhijklmnogpqrstuvwxyz

解题报告:

好难啊这题,,不知道为什么都觉得简单。。明明很难完全卡上拓扑排序的条件啊两个判断结束的条件,top不足26  或者两串每一个字符都分别相同并且后串比前串短。

AC代码:

#include<bits/stdc++.h>using namespace std;
char str[105][105];
int n;
int head[200],in[200];
int maze[200][200];
char ans[200];
int len[200];
bool vis[50][50];
int cnt,top;
struct Edge {int to,w,ne;
} e[400];
void add(int u,int v,int w) {e[cnt].to = v;e[cnt].ne = head[u];e[cnt].w = w;head[u] = cnt++;
}
bool topu() {//预处理 priority_queue< int , vector<int>, greater<int> > pq;//从小到大排 for(int i = 0; i<26; i++) {if(in[i] == 0 /*&& vis[i]*/) {
//          printf("i = %d\n",i);pq.push(i);
//          ans[++top] ='a'+i;}}while(!pq.empty() ) {int cur = pq.top();
//      printf("cur = %d\n",cur);pq.pop();ans[++top] = cur+'a';for(int i = head[cur]; i!=-1; i=e[i].ne) {//是ne啊!!!! in[e[i].to]--;  if(in[e[i].to] == 0 ) {pq.push(e[i].to);
//              ans[++top] = 'a' + e[i].to;       }}}if(top != 26) return false;else return true;
}
int main()
{memset(head,-1,sizeof(head));memset(vis,0,sizeof(vis));memset(in,0,sizeof(in));memset(maze,0,sizeof(maze) ) ;cnt = 0;cin>>n;//从str[1]开始读入字符串 for(int i = 1; i<=n; i++) {scanf("%s",str[i]);len[i] = strlen(str[i]);
//      vis[str[i][0] - 'a'] = 1;}int flag = 0;//点   从0到25; for(int i = 1; i<n; i++) {//是小于! flag = 0;for(int j = 0; j<min(len[i],len[i+1]); j++) {if(str[i][j] == str[i+1][j]) continue;flag = 1;if(maze[str[i][j]-'a'][str[i+1][j]-'a'] == 1) break;//写成continue了。。 add(str[i][j]-'a',str[i+1][j]-'a',0);maze[str[i][j]-'a'][str[i+1][j]-'a'] = 1;in[str[i+1][j]-'a'] ++;break;}if(flag == 0 && len[i] > len[i+1]) {printf("Impossible\n");return 0;} }if(topu()) {for(int i = 1; i<=26; i++) {printf("%c",ans[i]);}}else printf("Impossible\n");return 0 ;}

*【CF#510C】Fox And Names (拓扑排序)相关推荐

  1. CF510C Fox And Names——拓扑排序练习

    省委代码: #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> # ...

  2. CF思维联系--CodeForces -214C (拓扑排序+思维+贪心)

    ACM思维题训练集合 Furik and Rubik love playing computer games. Furik has recently found a new game that gre ...

  3. [cf] E - Gardener and Tree 拓扑排序

    前言 传送门 : 一开始想到了拓扑排序 但是拓扑是对一个点,所以还是想着中心根深度继续走 思路 我们对于每一个叶子节点 对其连接的节点的度数−1-1−1 进行拓扑操作 然后我们在操作的时候 同时记录一 ...

  4. 拓扑排序 Codeforces Round #290 (Div. 2) C. Fox And Names

    题目传送门 1 /* 2 给出n个字符串,求是否有一个"字典序"使得n个字符串是从小到大排序 3 拓扑排序 4 详细解释:http://www.2cto.com/kf/201502 ...

  5. 输出dag的所有拓扑排序序列_算法学习笔记(53): 拓扑排序

    拓扑排序是对DAG(有向无环图)上的节点进行排序,使得对于每一条有向边 , 都在 之前出现.简单地说,是在不破坏节点 先后顺序的前提下,把DAG拉成一条链.如果以游戏中的科技树(虽然名字带树,其实常常 ...

  6. HDU 3342 Legal or Not(拓扑排序)

    描述 ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that ju ...

  7. 【HDU - 3342】Legal or Not(拓扑排序)

    题干: ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that j ...

  8. BZOJ1880:[SDOI2009]Elaxia的路线(最短路,拓扑排序)

    Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w**每天都要奔波于宿舍和实验室之间, ...

  9. Codeforces 1635 E. Cars 二分图+拓扑排序

    link 题意: 坐标轴有两辆车 1第一种相向而行 2 第二种相背而行 先二分图跑出来他的方向 如果不符合直接no 再根据他的拓扑关系跑一边拓扑排序 (开了ios)输出就乱码!!!!这就是cf吧 #i ...

最新文章

  1. RStudio环境或者ggsave函数保存生成的图像为指定文件格式(pdf、jpeg、tiff、png、svg、wmf)、指定图像宽度、高度、分辨率(width、height、dpi)
  2. 设计一个user类(Java)
  3. javaSE基础04
  4. PHP文件函数 记录日志功能
  5. 华为p50预计售价鸿蒙是什么,华为P50pro预计售价多少 华为P50Pro参数配置
  6. Elasticsearch的Scroll操作
  7. DirectShow 在VS2005中环境配置
  8. 深度学习2.0-25.Train-Val-Test划分检测过拟合(交叉验证)
  9. from django.core.context_processors import crsf报错
  10. PAIP.获取RSS全文输出.txt
  11. android开发实战-记账本APP(二)
  12. IM即时通讯项目框架分析
  13. swfobject java_[Java教程]swfobject.js视频播放插件
  14. CMY和CMYK彩色模型
  15. t460p加固态硬盘 thinkpad_联想T460p加装固态硬盘
  16. Inna and Alarm Clock
  17. cad计算机快捷键设置,小U讲解完整版电脑CAD快捷键大全
  18. DevExpress XPO 学习笔记
  19. IE兼容性问题处理( 对象不支持startsWith )
  20. 历年北京理工大学复试上机题

热门文章

  1. [Leetcode][第733题][JAVA][图像渲染][BFS][DFS]
  2. mysql存储过程并行_Mysql存储过程的执行顺序问题
  3. 关于java中nextline读取空白行的问题
  4. html页面 wordpress,WordPress纯代码实现前端页面HTML完美压缩
  5. 水深平均的二维浅水方程推导
  6. python两个线程交替打印_三线程按顺序交替打印ABC的四种方法
  7. js 正则中冒号代表什么_javascript中正则表达式语法详解
  8. mysql事务所_mysql事务
  9. ISDN与PSTN的区别是什么?
  10. WinCE下的GPIO中断的处理