#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[50], outdegree[50];
set <int> vec[50], ivec[50];
int rnk[105];
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[++cnt]=nod;
}
int main ()
{
cin >> n;
int mxlen=0;
for (int i=1;i<=n;i++)
{
cin >> v[i];
mxlen=max (mxlen, (int)v[i].size());
}
for (int i=1;i<=n;i++)
{
cin >> order[i];
}
for (int i=1;i<=n;i++)
{
final[order[i]]=v[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'+1].insert (final[i][ind]-'a'+1);
break;
}
}
if (!ok && final[j].size()<final[i].size())
{
cout << "NE";
return 0;
}
}
}
for (int i=1;i<=26;i++)
{
memset (viz, 0, sizeof(viz));
check (i);
if (looped)
{
cout << "NE";
return 0;
}
}
memset (viz, 0, sizeof(viz));
for (int i=1;i<=26;i++)
{
if (!viz[i])
dfs (i);
}
cout << "DA\n";
string ans;
ans.resize (26);
for (int i=1;i<=26;i++)
{
ans[rnk[i]-1]=i+'a'-1;
}
cout << ans;
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... |