#include<bits/stdc++.h> 
#include<cstring>
#define INF 0x3f3f3f3f 
#define PI acos(-1.0) 
#define N 50001 
#define MOD 123 
#define E 1e-6 
using namespace std; 
int n; 
int a[N][101],g[27][27]; 
int enter[27],vis[27],sum[27]; 
int cnt; int p; 
void judge(int x,int y) { 
    if(a[x][y]==0||a[x+1][y]==0) 
    return ; 
    if(a[x][y]!=a[x+1][y]) {
        g[a[x][y]][a[x+1][y]]=1; 
        enter[a[x+1][y]]++; 
    } 
    else judge(x,y+1); 
} 
bool topsort() { 
    for(int i=1;i<=27;++i) 
    if(vis[i]) cnt++; 
    for(int i=1;i<n;++i) judge(i,1);
    int work,temp;
    while(p!=cnt)
    {
        work=0;
        for(int i=1;i<=cnt;++i)
        {
            if(enter[i]==0)
            {
                temp=i;
                enter[i]=-1;
                work++;
            }
        }
        if(work!=1)
            return false;
        sum[++p]=temp;
        for(int i=1;i<=cnt;++i)
        {
            if(g[temp][i])
            {
                g[temp][i]=0;
                enter[i]--;
            }
        }
    }
    return true;
} 
int main() { 
    cin>>n; 
    for(int i=1;i<=(n+1);i++) { 
        string str; 
        cin>>str; 
        for(int j=0;j<=str.size()-1;j++) { 
            a[i][++a[i][0]]=int(str[j]+1-'a'); 
            vis[str[j]+1-'a']=1; 
        } 
    }

    if(!topsort())
        cout<<0;
    else
    {
        for(int i=1;i<=a[n+1][0];++i)
        {
            for(int j=1;j<=cnt;++j)
            {
                if(a[n+1][i]==sum[j])
                {
                    cout<<char(j-1+'a');
                    break;
                }
            }
        }
    }
    return 0;
}

0 条评论

目前还没有评论...

信息

ID
399
时间
ms
内存
MiB
难度
6
标签
递交数
87
已通过
28
上传者