This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
const int SIGMA = 26;
struct Trie {
int words;
Trie* children[SIGMA];
Trie() {
words = 0;
for (int i = 0; i < SIGMA; i++) {
children[i] = NULL;
}
}
};
void insert(Trie* root, char* S) {
if (*S == '\0') {
root->words++;
} else {
if (root->children[S[0] - 'a'] == NULL) {
root->children[S[0] - 'a'] = new Trie();
}
insert(root->children[S[0] - 'a'], S + 1);
}
}
void dfs(Trie* root) {
for (int i = 1; i <= root->words; i++) {
std::cout << "P\n";
}
for (int i = 0; i < SIGMA; i++) {
if (root->children[i] != NULL) {
std::cout << char(i + 'a') << "\n";
dfs(root->children[i]);
std::cout << "-\n";
}
}
}
int main() {
Trie root;
char* S = new char[20 + 1];
int n;
std::cin >> n;
for (int i = 1; i <= n; i++) {
std::cin >> S;
insert(&root, S);
}
dfs(&root);
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... |