AC代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
#define N 100010
int cur;
struct node
{
int ans;
int next[10];
void init()
{
ans=0;
memset(next,-1,sizeof(next));
}
}t[N];
void in(char *s,int len)
{
int p=0;
for(int i=0; i<len; i++)
{
int x=s[i]-'0';
if(t[p].next[x]==-1)
{
cur++;
t[cur].init();
t[p].next[x]=cur;
}
p=t[p].next[x];
t[p].ans++;
}
}
void panduan()
{
int i,j,count,p,flag;
for(i=1;i<=cur;i++)
{
count=0; flag=0;
for(j=0;j<10;j++)
{
if(t[i].next[j]==-1)
{
continue;
}
flag=1;
p=t[i].next[j];
count+=t[p].ans;
}
if(t[i].ans!=count&&flag)
{
printf("NO\n");
return;
}
}
printf("YES\n");
}
int main()
{
int k,n;
scanf("%d",&k);
while(k--)
{
scanf("%d",&n);
char s[12];
t[0].init();
cur=0;
for(int i=0; i<n; i++)
{
scanf("%s",s);
int len1=strlen(s);
in(s,len1);
}
panduan();
}
return 0;
}