PS:代码
#include<iostream>
#include<string>
using namespace std;
#define max 60010
struct Node
{
bool flag;
int nxt[10];
};
Node node[max];
int loc;
bool flag;
void Init()
{
loc = 2;
flag = true;
node[1].flag = false;
for(int i=0;i<10;i++)
node[1].nxt[i] = -1;
}
void Insert(char dec[],int len)
{
int r = 1,pos;
for(int i=0;i<len;i++)
{
pos = dec[i]-'0';
if(node[r].nxt[pos] == -1)
{
node[r].nxt[pos] = loc;
node[r].flag = false;
if(i == len-1)
node[r].flag = true;
for(int j=0;j<10;j++)
node[loc].nxt[j] = -1;
r = loc;loc++;
}
else
{
if(node[r].flag || (i == len-1))
{
flag = false;
return ;
}
else
r = node[r].nxt[pos];
}
}
}
int main()
{
int cas,n,len;
char teleph[20];
scanf("%d",&cas);
while(cas--)
{
Init();
scanf("%d",&n);
while(n--)
{
scanf("%s",teleph);
len = strlen(teleph);
if(flag)
Insert(teleph,len);
}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}