// UUID: 33d4de0a-48fc-46c2-9adf-50d105362172
#include <bits/stdc++.h>
using namespace std;
vector<char> nodes(1, 0);
vector<vector<int>> nbrs(1, vector<int>(0));
vector<bool> vis;
string strans;
int dfs(int Index){
if(vis[Index]) return 0;
vis[Index]=true;
//printf("[%d: %d]", Index, nbrs[Index].size());
int ans=0;
for(int x : nbrs[Index]){
if(!vis[x]){
strans.push_back(nodes[x]);
//printf("%c\n", nodes[x]);
ans+=2+dfs(x);
strans.push_back('-');
//printf("-\n");
}
}
if(ans==0){
strans.push_back('P');
}
return ans;
}
int main() {
int n; cin >> n;
int maxLen=0;
vector<pair<int, string>> input(n); for(auto& x : input){
cin >> x.second;
x.first=x.second.size();
}
sort(input.begin(), input.end());
for(int i=0;i<n;i++){
const string& s=input[i].second;
maxLen=max(maxLen, (int)s.size());
int curr=0;
for(char x : s){
bool found=false;
for(int y : nbrs[curr]){
if(x==nodes[y]){
found=true;
curr=y;
break;
}
}
if(!found){
nbrs[curr].push_back(nbrs.size());
curr=nbrs.size();
nbrs.push_back(vector<int>(0));
nodes.push_back(x);
}
}
}
vis.resize(nodes.size(), false);
cout << dfs(0)+n-maxLen;
while(strans.back()=='-') strans.pop_back();
for(char x : strans) cout << '\n' << x;
}
| # | 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... |