

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
int k=1,n;
struct trie
{
int son[27],sum;
}t[1001];
char s[1001][101];
void insert(int j)
{
int l1=strlen(s[j]),p=1;
for(int i=0;i<l1;i++)
{
if(t[p].son[s[j][i]-'a']==0) t[p].son[s[j][i]-'a']=++k;
p=t[p].son[s[j][i]-'a'];
t[p].sum++;
}
}
void check(int j)
{
int p=1;
bool flag=1;
for(int i=0;i<strlen(s[j]);i++)
{
if(t[p].sum>1&&i!=strlen(s[j])-1) cout<<s[j][i];
else if(t[p].sum==1)
{
cout<<s[j][i]<<endl;
break;
}
else if(t[p].sum>1&&i==strlen(s[j])-1)
{
cout<<s[j][i]<<endl;
break;
}
}
}
int main()
{
while(scanf("%s",s[++n])!=EOF) insert(n);
for(int i=1;i<=n;i++)
{
for(int j=0;j<strlen(s[i]);j++) cout<<s[i][j];
cout<<" ";
check(i);
}
}
感觉跟书上写的差不多……吧?
全WA了qaq