jubaidul_ctg_bd

Tries

Feb 8th, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. //********* Tries ************
  5. int node[100005][26];
  6. bool endmark[100005]; // mark to end point
  7. int idCnt;
  8.  
  9. void build(string s,int len)
  10. {
  11.     int cur=0;
  12.     for(int i=0; i<len; i++)
  13.     {
  14.         int val=s[i]-'0';
  15.         if(node[cur][val]==0)
  16.         {
  17.             node[cur][val]=++idCnt;
  18.         }
  19.         cur=node[cur][val];
  20.     }
  21.     endmark[cur]=1;
  22. }
  23.  
  24. bool search(string s, int len)
  25. {
  26.     int cur=0;
  27.     for(int i=0; i<len; i++)
  28.     {
  29.         int val=s[i]-'0';
  30.         if(node[cur][val]==0) return false;
  31.         cur=node[cur][val];
  32.     }
  33.     return endmark[cur];
  34. }
  35.  
  36.  
  37.  
  38. int main()
  39. {
  40.     //freopen("testcases.txt","r",stdin);
  41.     ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  42.  
  43.     int w; cin>>w;
  44.     while(w--)
  45.     {
  46.         string s; cin>>s;
  47.         build(s, s.size());
  48.     }
  49.     int q; cin>>q;
  50.     while(q--)
  51.     {
  52.         string s; cin>>s;
  53.         cout << search(s, s.size()) << endl;
  54.     }
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment