Advertisement
SuitNdtie

blockchain

Jun 1st, 2019
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<map>
  3. #include<algorithm>
  4. using namespace std;
  5.  
  6. typedef long long int ll;
  7.  
  8. ll Pa = 98765431;
  9. ll Pb = 1e9+7;
  10.  
  11. ll aPa[1100];
  12. ll aPb[1100];
  13.  
  14. int main()
  15. {
  16.     aPa[0] = 1;
  17.     aPb[0] = 1;
  18.     for(int i = 1 ; i < 1100 ; i ++){
  19.         aPa[i] = aPa[i-1]*Pa;
  20.         aPb[i] = aPb[i-1]*Pb;
  21.     }
  22.     int t,q;
  23.     scanf("%d %d",&t,&q);
  24.     map<ll,int> table;
  25.     for(int i = 0 ; i < t ; ++i){
  26.         ll Ht = 0;
  27.         int n;
  28.         scanf("%d",&n);
  29.         for(int j = 1 ; j < n ; j ++){
  30.             int u,v;
  31.             scanf("%d %d",&u,&v);
  32.             if(u > v)swap(u,v);
  33.             Ht += aPa[u]*aPb[v];
  34.         }
  35.         table[Ht]++;
  36.     }
  37. //  return 0;
  38.     for(int i = 0 ; i < q ; ++i){
  39.         int m;
  40.         ll Hq = 0;
  41.         scanf("%d",&m);
  42.         for(int j = 1 ; j < m ; j ++){
  43.             int u,v;
  44.             scanf("%d %d",&u,&v);
  45.             if(u>v)swap(u,v);
  46.             Hq += aPa[u]*aPb[v];
  47.         }
  48.         std::map<ll,int>::iterator its = table.find(Hq);
  49.         if(its == table.end()){
  50.             printf("0\n");
  51.         }
  52.         else{
  53.             printf("%d\n",its->second);
  54.         }
  55.     }
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement