trie树

Description

 

最近情报人员得到了一些经过加密的文章,每个单词都很长。破译人员想到先把单词简化一下,方法是把每个单词尽量取短些的前缀,但所取的前缀不能是其他单词的前缀。

这个任务现在就交给你来完成。

解释:“字符串s1是s2的前缀”是说把字符串s2的后面去掉某些,只保留与s1的长度时,s2就与s1完全相同。如:“abc”是“abcde”和“abc”的前缀,但不是“ababc”的前缀。

 


Input

第一行一个整数N,表示单词个数。 下面有N行,每行一个单词。


Output

共N行,每行一个单词,是对应上面的N个单词化简后的单词。


Sample Input

3 abc efg ijh


Sample Output

a e I


Hint

数据范围 单词数N,1≤N≤50;每个单词的长度不超过50;并且单词都有小写字母构成。 保证所给单词没有一个单词是另一个单词的前缀。

#include
#include
#include
#include
#include
#include
using namespace std;
int n;
string s[55];
int num=0;
struct pointt
{
	int tr[26],cd;
	pointt() {cd=0;}
}a[2505];

void ins(string s)
{
	int len=s.size(),p=0;
	for(int i=0;i>s[i];
		ins(s[i]);
	}
    for(int i=1;i<=n;i++)   	matchh(s[i]);
  
	return 0;
}

 

你可能感兴趣的:(trie树)