Codeforces Round #290 (Div. 2)(A,B,C)(三)
; for(i=0;i<26;i++) for(j=0;j<26;j++){ if(in[j]==0){ dis[cnt++]=j; in[j]=-1; for(k=0;k<26;k++){ if(map[j][k]==1) in[k]--; } break; } } if(cnt<26) printf("Impossible\n"); else{ for(i=0;i<26;i++) printf("%c",dis[i]+'a'); } } int main() { int n,i,j; int u,v; int flag; char str[110][110]; while(~scanf("%d",&n)){ flag=0; for(i=0;i
len2){ for(j=0;str[i-1][j]!='\0';j++){ if(j==len2){ flag=1; break; } if(str[i][j]!=str[i-1][j]){ u=str[i-1][j]-'a'; v=str[i][j]-'a'; if(!map[u][v]){ map[u][v]=1; in[v]++; } break; } } } else if(len2>len1){ for(j=0;str[i-1][j]!='\0';j++){ if(j==len1){ flag=1; break; } if(str[i][j]!=str[i-1][j]){ u=str[i-1][j]-'a'; v=str[i][j]-'a'; if(!map[u][v]){ map[u][v]=1; in[v]++; } break; } } } else{ for(j=0;str[i-1][j]!='\0';j++){ if(j==len2){ break; } if(str[i][j]!=str[i-1][j]){ u=str[i-1][j]-'a'; v=str[i][j]-'a'; if(!map[u][v]){ map[u][v]=1; in[v]++; } break; } } } } if(flag){ printf("Impossible\n"); continue; } topo(); } return 0; }
|