fork download
  1. //Verdict: Runtime Error
  2.  
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5. struct node{
  6. int cnt_trees;
  7. bool endmark;
  8. node *next[128];
  9. node(){
  10. endmark=false;
  11. cnt_trees=0;
  12. for(int i=0;i<128;i++) next[i]=NULL;
  13. }
  14. }*root;
  15.  
  16. void insert_into_Trie(string str){
  17. node *cur=root;
  18. for(int i=0;str[i];i++){
  19. int id=str[i];
  20. if(cur->next[id]==NULL)
  21. cur->next[id]=new node();
  22. cur=cur->next[id];
  23. }
  24. cur->cnt_trees++;
  25. }
  26.  
  27. int search_into_Trie(string str){
  28. node *cur=root;
  29. for(int i=0;str[i];i++){
  30. int id=str[i];
  31.  
  32. cur=cur->next[id];
  33. }
  34. return cur->cnt_trees;
  35. }
  36.  
  37.  
  38. void del(node* cur)
  39. {
  40. for(int i= 0;i<128;i++)
  41. if (cur->next[i])
  42. del(cur->next[i]);
  43.  
  44. delete(cur);
  45. }
  46.  
  47.  
  48. int main()
  49. {
  50.  
  51. int tc,n,q,cs=0;
  52. string str;
  53. cin>>tc;
  54. while(tc--){
  55. root=new node;
  56. cin>>n;
  57. while(n--){
  58. cin>>str;
  59. if(str.length()>3)
  60. sort(str.begin()+1,str.end()-1);
  61. insert_into_Trie(str);
  62. }
  63. cin>>q;
  64. cout<<"Case "<<++cs<<":"<<endl;
  65. getchar();
  66. while(q--){
  67. getline(cin,str);
  68. int ans=1;
  69. string temp="";
  70. for(int i=0;str[i];++i){
  71. if(str[i]==' '){
  72. if(temp.length()>3)
  73. sort(temp.begin()+1,temp.end()-1);
  74. //cout<<temp<<endl;
  75. ans*=search_into_Trie(temp);
  76. temp="";
  77. }
  78. else temp+=str[i];
  79. }
  80. if(temp.length()>3)
  81. sort(temp.begin()+1,temp.end()-1);
  82. //cout<<temp<<endl;
  83. ans*=search_into_Trie(temp);
  84. cout<<ans<<endl;
  85. }
  86. del(root);
  87. }
  88. return 0;
  89. }
  90.  
Time limit exceeded #stdin #stdout 5s 15248KB
stdin
Standard input is empty
stdout
Standard output is empty