#include<cstdio>
#include<iostream>
#include<string>
#include<cstdlib>
#define maxn 10
using namespace std;
struct
Tri
{

Tri*next[maxn];
int
num;
};

Tri *root;
void
buildTri(string ss)//建树的过程是一个动态的过程 动插的过程
{
Tri *p=root,*q;
for
(int i=;i<ss.size();i++)
{

int
id=ss[i]-'0';
if
(p->next[id]==NULL)
{

q=(Tri*)malloc(sizeof(Tri));
q->num=;
for
(int j=;j<maxn;j++) q->next[j]=NULL;
p->next[id]=q;
p=p->next[id];
}

else
p=p->next[id],p->num++;
}

p->num=-;// 作为结束的标志
}
int
findTri(string ss)
{

Tri *p=root,*q;
for
(int i=;i<ss.size();i++)
{

int
id=ss[i]-'0';
p=p->next[id];
if
(p==NULL) return;
if
(p->num==-) return -;
}

return
-;
}

void
del(Tri *root)
{

Tri *zz=root;
if
(zz==NULL) return;
for
(int i=;i<maxn;i++)
{

if
(zz->next[i]!=NULL) del(zz->next[i]);
}

free(zz);
}

int
main()
{

int
t;
cin>>t;
while
(t--)
{

root=(Tri*)malloc(sizeof(Tri));
for
(int i=;i<maxn;i++) root->next[i]=NULL;
root->num=;
int
ret;
cin>>ret;
string ss;
int
flag=;
while
(ret--)
{

cin>>ss;
if
(findTri(ss)==-) flag=;
// cout<<flag<<endl;
buildTri(ss);
}

del(root);
if
(flag) cout<<"YES"<<endl;
else
cout<<"NO"<<endl; }
return
;
}

最新文章

  1. MAT使用--转
  2. 使用UML进行项目开发
  3. ruby cookbook
  4. phpQuery用法
  5. 从最简单的HelloWorld理解MVP模式
  6. [转贴]使用CryptoAPI解析X509证书和P12证书
  7. Linux基础(二)
  8. JavaScript--对象-检查一个对象是否是数组
  9. CP1W-CIF41以太网模块(使用总结)
  10. git “bad index file sha1 signature fatal: index file corrupt”错误
  11. android系统自带的Service原理与使用
  12. FileMode枚举
  13. samba(转)
  14. CentOS7 下linux不能上网解决方法​,centos7 eth0 没有ip,IP突然丢失
  15. Weex-语法笔记 一
  16. 关于cin的用法一些小结
  17. 记一次企业级爬虫系统升级改造(六):基于Redis实现免费的IP代理池
  18. Javascript--cookie创建与查看
  19. .Net IOC框架入门之二 CastleWindsor
  20. USACO比赛题泛刷

热门文章

  1. [转]用代码访问 Https
  2. Swift 自动引用计数(ARC)
  3. 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_1.页面发布-需求分析
  4. JMeter 不同线程组间变量传递(亲测 ok)
  5. Product - 产品经理 - 知返
  6. mybatis问题。foreach循环遍历数组报错情况,及其解决方法
  7. 12-1 TCP/IP协议栈
  8. JavaScript中new运算符的实现
  9. kubernetes配置文件热更新细节
  10. 建立自己的数据类型——C结构体归纳