#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
#include <queue>
#include <cstring>
using namespace std;
int n;
string v[105], final[105];
int order[105], viz[550], outdegree[550];
set <int> vec[560], ivec[506];
vector <int> rnk;
int looped=0;
void check (int nod)
{
if (viz[nod])
{
looped=1;
return;
}
viz[nod]=1;
for (auto chestie : vec[nod])
{
check (chestie);
}
viz[nod]=0;
}
int cnt=0;
void dfs (int nod)
{
viz[nod]=1;
for (auto chestie : vec[nod])
{
if (viz[chestie])
continue;
dfs (chestie);
}
rnk.push_back (nod);
}
int main ()
{
cin >> n;
for (int i=1;i<=n;i++)
{
cin >> v[i];
}
for (int i=1;i<=n;i++)
{
cin >> order[i];
final[i]=v[order[i]];
}
for (int i=1;i<n;i++)
{
for (int j=i+1;j<=i+1;j++)
{
bool ok=0;
for (int ind=0;ind<min (final[i].size(), final[j].size());ind++)
{
if (final[i][ind]!=final[j][ind])
{
ok=1;
vec[final[j][ind]-'a'].insert (final[i][ind]-'a');
break;
}
}
if (!ok && final[j].size()<final[i].size())
{
cout << "NE";
return 0;
}
}
}
for (int i=0;i<26;i++)
{
memset (viz, 0, sizeof(viz));
check (i);
if (looped)
{
cout << "NE";
return 0;
}
}
memset (viz, 0, sizeof(viz));
for (int i=0;i<26;i++)
{
if (!viz[i])
dfs (i);
}
cout << "DA\n";
int ans[50];
for (int i=0;i<26;i++)
{
ans[rnk[i]]=i;
}
for (int i=0;i<26;i++)
{
cout << char (ans[i]+'a');
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |