Submission #1194451

#TimeUsernameProblemLanguageResultExecution timeMemory
1194451nquangCezar (COCI16_cezar)C++17
10 / 100
0 ms400 KiB
#include<bits/stdc++.h>
using namespace std;
const int maxn = 105;
string s[maxn+1];
int n;
int a[maxn+1];
int color[30];
vector<int>adj[30];
int id=26;
int t[30];
char ans[30];
int findDiff(int u,int v){
    int x=s[u].size();
    int y=s[v].size();
    for(int i=0;i<min(x,y);++i){
        if(s[u][i]!=s[v][i]) return i;
    }
    return -1;
}
bool DAG=true;
void dfs(int u){
    color[u]=1;
    for(int v:adj[u]){
        if(color[v]==0){
            dfs(v);
        }
        else if(color[v]==1){
            DAG=false;
        }
    }
    t[--id]=u;
    color[u]=2;
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> n;
    for(int i=1;i<=n;++i) cin >> s[i];
    for(int i=1;i<=n;++i) cin >> a[i];
    for(int i=1;i<n;++i){
        int pos=findDiff(a[i],a[i+1]);
        if(pos==-1){
            if(s[a[i]].size()>s[a[i+1]].size()){
            cout << "NE";
            return 0;
            }
        }
        else{
            int x=s[a[i]][pos]-'a';
            int y=s[a[i+1]][pos]-'a';
            adj[x].push_back(y);
        }
    }
    for(int i=0;i<26;++i){
        if(!color[i]) dfs(i);
    }
    if(!DAG){
        cout << "NE";
        return 0;
    }
    cout << "DA\n";
    for(int i=0;i<26;++i){
        ans[t[i]]=char('a'+i);
    }
    for(int i=0;i<26;++i) cout << ans[i];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...