이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#define endl "\n"
using namespace std;
int inf = 1e9;
struct Trie
{
Trie *p[26];
Trie *par;
int is_end;
int sub;
Trie()
{
is_end = 0;
sub = inf;
par = nullptr;
for(int i = 0; i < 26; i++) p[i] = nullptr;
}
};
int n;
Trie *root = nullptr;
int br;
void insert1(string s)
{
Trie *beg = root;
for(char c : s)
{
if(beg->p[c-'a']==nullptr) beg->p[c-'a'] = new Trie();
(beg->p[c-'a']) -> par = beg;
beg = beg->p[c-'a'];
}
beg->is_end ++;
beg->sub = 0;
while(beg->par!=nullptr)
{
int ch = beg->sub;
beg = beg->par;
beg->sub = min(beg->sub,ch+1);
}
}
void read()
{
cin >> n;
string s;
for(int i = 1; i <= n; i++)
{
cin >> s;
insert1(s);
}
}
bool cmp(pair<Trie*,char> t1, pair<Trie*,char> t2)
{
if(t1.first==nullptr||t2.first==nullptr) return t1.first != nullptr;
return ((t1.first)->sub) < ((t2.first)->sub);
}
void rec(Trie *beg)
{
for(int i = 1; i <= (beg->is_end); i++)
{
cout << "P" << endl;
br++;
}
if(br==n) exit(0);///VAZHNO
vector<pair<Trie*,char> >v;
for(int i = 0; i < 26; i++) v.push_back({beg->p[i],i+'a'});
sort(v.begin(),v.end(),cmp);
for(pair<Trie*,char> pom : v)
{
if(pom.first==nullptr) return;
cout << pom.second << endl;
rec(pom.first);
cout << "-" << endl;
}
}
void solve()
{
rec(root);
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
read();
solve();
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... |