#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int ch[300001][26];
int id,p[30001];
char s[10001][25];
void insert(char *s)
{
int cur=1,i;
for(i=0;s[i];i++)
{
if(!ch[cur][s[i]-'a'])
ch[cur][s[i]-'a']=++id;
cur=ch[cur][s[i]-'a'];
p[cur]++;
}
}
void query(char *s)
{
int cur=1,i;
for(i=0;s[i];i++)
{
cur=ch[cur][s[i]-'a'];
if(p[cur]==1)
{
i++;
break;
}
}
s[i]='\0';
puts(s);
}
int main()
{
//memset(p,0,sizeof(p));当时一不小心就加了个memset,结果一直ML,后来百度了一下才知道,全局变量如果没有初始化时没有分配空间的。
//memset(ch,0,sizeof(ch));
id=1;
int i=0,j;
while(gets(s[++i])) insert(s[i]);
for(j=1;j<=i;j++)
{
printf("%s ",s[j]);
query(s[j]);
}
return 0;
}
POJ 2001(傻逼版)
最新推荐文章于 2018-11-14 11:04:31 发布