杭电1247

来源:互联网 发布:淘宝好店推荐前十名 编辑:程序博客网 时间:2024/05/06 11:37
#include <cstdio>#include <iostream>#include <cstring>using namespace std;int const maxn=26;int sum;string s[60000];struct node{int Count;node*next[maxn];node(){Count=0;memset(next,0,sizeof(next));}};node *root=new node();void Insert(string s){node *q=root;int len=s.size();for(int i=0;i<len;i++){int id=s[i]-'a';if(q->next[id]==NULL)q->next[id]=new node();q=q->next[id];}q->Count=1;}int Find(string s){if(s=="") return 0; node *q=root;int len=s.size();for(int i=0;i<len;i++){int id=s[i]-'a';q=q->next[id];     if(q==0)return 0;}if(q->Count)return 1;return 0;}int query(string s){node *q=root;int len=s.size();for(int i=0;i<len-1;i++){int id=s[i]-'a';q=q->next[id];if(q->Count==1){if(Find(s.substr(i+1)))return 1;}}return 0;}int main(){int i;string str;sum=0;while(cin>>str){s[sum++]=str;Insert(str);}for(i=0;i<sum;i++){if(query(s[i]))cout<<s[i]<<endl;}return 0;}

0 0
原创粉丝点击