dial
HDU 1671
question meaning: Given n strings, if one of them is a prefix of the other, output NO.
template
int n,m;
int trie[maxn][30],tot=1;
int en[maxn];
char ss[maxn][30];
void inser(char *s){
//trie插入
int ch,len=strlen(s),p=1;
for(int i=0;i<len;i++){
ch=s[i]-'0';
if(trie[p][ch]==0)trie[p][ch]=++tot;
p=trie[p][ch];
}
en[p]++;
}
int sear(char *s){
//检索字符串是否存在
int len=strlen(s),p=1;
for(int i=0;i<len;i++){
p=trie[p][s[i]-'0'];
if(en[p]>=1&&i!=len-1)return 1;
if(i==len-1&&en[p]>1)return 1;
}
return 0;
}
int main(){
int t,sum;
sci(t);
while(t--){
for(int i=1;i<=tot;i++)mem(trie[i],0);
tot=1;
mem(en,0);
sum=0;
sci(n);
rep(i,1,n){
scanf("%s",ss[i]);
inser(ss[i]);
}
rep(i,1,n){
if(sear(ss[i])){
sum=1;break;}
}
if(sum)puts3();
else puts2();
}
return 0;
}