#include <iostream>
#include <cstdlib>
#include <string>
#include <algorithm>
using namespace std;
struct trie
{
int end;
trie* next[26];
trie(int var = 0)
{
end = var;
for(int i=0;i<26;i++)
next[i]=NULL;
}
};
string data[10005];
trie *result;
void del(trie *head)
{
if(head==NULL)
return;
for(int i=0;i<26;i++)
del(head->next[i]);
delete head;
}
bool add(trie *head,string a,int i)
{
if(i==a.length()-1) {
int index = a[i]-'0';
if(head->next[index]==NULL)
{
trie * temp = new trie(1);
head->next[index]=temp;
return false;
}
if(head->next[index]->end == 1) return true;
else head->next[index]->end = 1;
return false;
}
int index = a[i]-'0';
if(head->next[index]==NULL)
{
trie * temp =new trie();
head->next[index]= temp;
return add(head->next[index],a,i+1);
}
else if(head->next[index]->end==1) return true;
else return add(head->next[index],a,i+1);
return false;
}
void init()
{
int test;
cin>>test;
while(test--)
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>data[i];
sort(data,data+n);
result = new trie();
bool flag=false;
for(int i=0;i<n;i++)
{
if(add(result,data[i],0)) {flag = true;break;}
}
if(flag) puts("NO");
else puts("YES");
del(result);
}
}
int main()
{
init();
return 0;
}
hdu 1671
最新推荐文章于 2014-09-07 22:04:28 发布