Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<map>
- #include<algorithm>
- using namespace std;
- typedef long long int ll;
- ll Pa = 98765431;
- ll Pb = 1e9+7;
- ll aPa[1100];
- ll aPb[1100];
- int main()
- {
- aPa[0] = 1;
- aPb[0] = 1;
- for(int i = 1 ; i < 1100 ; i ++){
- aPa[i] = aPa[i-1]*Pa;
- aPb[i] = aPb[i-1]*Pb;
- }
- int t,q;
- scanf("%d %d",&t,&q);
- map<ll,int> table;
- for(int i = 0 ; i < t ; ++i){
- ll Ht = 0;
- int n;
- scanf("%d",&n);
- for(int j = 1 ; j < n ; j ++){
- int u,v;
- scanf("%d %d",&u,&v);
- if(u > v)swap(u,v);
- Ht += aPa[u]*aPb[v];
- }
- table[Ht]++;
- }
- // return 0;
- for(int i = 0 ; i < q ; ++i){
- int m;
- ll Hq = 0;
- scanf("%d",&m);
- for(int j = 1 ; j < m ; j ++){
- int u,v;
- scanf("%d %d",&u,&v);
- if(u>v)swap(u,v);
- Hq += aPa[u]*aPb[v];
- }
- std::map<ll,int>::iterator its = table.find(Hq);
- if(its == table.end()){
- printf("0\n");
- }
- else{
- printf("%d\n",its->second);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement