poj 3630(phone list)
来源:互联网 发布:分子人类学 知乎 编辑:程序博客网 时间:2024/05/26 07:28
Description
Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let's say the phone catalogue listed these numbers:
- Emergency 911
- Alice 97 625 999
- Bob 91 12 54 26
In this case, it's not possible to call Bob, because the central would direct your call to the emergency line as soon as you had dialled the first three digits of Bob's phone number. So this list would not be consistent.
Input
The first line of input gives a single integer, 1 ≤ t ≤ 40, the number of test cases. Each test case starts withn, the number of phone numbers, on a separate line, 1 ≤ n ≤ 10000. Then followsn lines with one unique phone number on each line. A phone number is a sequence of at most ten digits.
Output
For each test case, output "YES" if the list is consistent, or "NO" otherwise.
Sample Input
2391197625999911254265113123401234401234598346
Sample Output
NOYES
Source
#include <memory.h>
using namespace std;
int nodenum,flag;
struct tree_node
{
bool isstr;
tree_node *branch[10];
}Node[100100];
class Trie
{
private:
tree_node root;
public:
Trie() { root=Node[0];}
bool insert(char *word)
{
tree_node *location=&root;
int i=0,len=strlen(word);
while(word[i])
{
if(i==len-1&&location->branch[word[i]-'0']!=NULL)
return false;
if(location->branch[word[i]-'0']==NULL) //创建新的结点
{
location->branch[word[i]-'0']=&Node[nodenum];
Node[nodenum].isstr=false;
memset(Node[nodenum].branch,0,sizeof(Node[nodenum].branch));
nodenum++;
}
if(location->branch[word[i]-'0']->isstr)
return false;
location=location->branch[word[i]-'0'];
i++;
}
location->isstr=true;
return true;
}
};
int main()
{
int t,n;
cin>>t;
while(t--)
{
cin>>n;
flag=true;
nodenum=1;
char tel[11];
Trie t;
while(n--)
{
cin>>tel;
if(!t.insert(tel) )
flag=false;
}
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
- POJ 3630 Phone List
- POJ 3630 Phone List
- poj 3630 Phone List
- poj 3630 Phone List
- POJ 3630 Phone List
- Poj 3630 Phone List
- POJ 3630 Phone List
- poj 3630 Phone List
- poj 3630 phone list
- poj 3630 Phone List
- POJ-3630 Phone List
- POJ 3630 Phone List
- poj 3630(phone list)
- poj 3630 Phone List
- POJ 3630 Phone List
- POJ 3630 Phone List
- POJ【3630】Phone List
- POJ 3630 Phone List
- NSMutableAttributedString 文本样式 (一)
- 【算法学习笔记】16.暴力求解法04 回溯法03 剪枝法 带宽
- Android中SAX解析XML
- 健康睡眠要保持的六条规则
- iosUILabel的用法
- poj 3630(phone list)
- 【热门收藏】iOS开发人员必看的精品资料(100个)——下载目录
- 多边形区域填充算法--扫描线种子填充算法
- Lua的OS库
- Android—Jni初步
- hdu 1284 钱币兑换问题 完全背包之方案总数~
- linux后台运行和关闭、查看后台任务
- H265(HEVC) nal 单元头介绍及rtp发送中的fu分组发送详解
- 学生各门成绩、总分及平均分