Pabon_SEC

Phone List

Apr 4th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. char s[10005][12];
  6.  
  7. bool flag = true;
  8.  
  9. struct node
  10. {
  11.     bool endmark;
  12.  
  13.     node *next[12];
  14.  
  15.     node()
  16.     {
  17.         endmark = false;
  18.  
  19.         for(int i=0; i<10; i++)
  20.         {
  21.             next[i] = NULL;
  22.         }
  23.     }
  24.  
  25. }*root;
  26.  
  27. void Insert(char *str,int len)
  28. {
  29.     node *curr = root;
  30.  
  31.     for(int i=0; i<len; i++)
  32.     {
  33.         int id = str[i] - '0';
  34.  
  35.         if(curr->next[id]==NULL)
  36.         {
  37.             curr->next[id] = new node();
  38.         }
  39.  
  40.         curr = curr->next[id];
  41.     }
  42.  
  43.     curr->endmark = true;
  44. }
  45.  
  46. bool Search(char *str,int len)
  47. {
  48.     node *curr = root;
  49.  
  50.     int i;
  51.  
  52.     for(i=0; i<len-1; i++)
  53.     {
  54.         int id = str[i] - '0';
  55.  
  56.         curr = curr->next[id];
  57.  
  58.         if(curr->endmark==true)
  59.         {
  60.             flag = false;
  61.         }
  62.     }
  63. }
  64.  
  65. void del(node *curr)
  66. {
  67.     for(int i=0; i<10; i++)
  68.     {
  69.         if(curr->next[i])
  70.         {
  71.             del(curr->next[i]);
  72.         }
  73.     }
  74.  
  75.     delete(curr);
  76. }
  77.  
  78. int main()
  79. {
  80.     int num,i,a,test,len;
  81.  
  82.     scanf("%d",&test);
  83.  
  84.     while(test--)
  85.     {
  86.         root = new node();
  87.  
  88.         scanf("%d",&num);
  89.  
  90.         for(i=1; i<=num; i++)
  91.         {
  92.             scanf("%s",s[i]);
  93.  
  94.             len = strlen(s[i]);
  95.  
  96.             Insert(s[i],len);
  97.         }
  98.  
  99.         flag = true;
  100.  
  101.         for(i=1;i<=num;i++)
  102.         {
  103.             len = strlen(s[i]);
  104.  
  105.             Search(s[i],len);
  106.         }
  107.  
  108.         if(flag)
  109.         {
  110.             printf("YES\n");
  111.         }
  112.         else
  113.         {
  114.             printf("NO\n");
  115.         }
  116.  
  117.         del(root);
  118.     }
  119.  
  120.     return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment