Advertisement
Nafis

uva 11503 Virtual Friends

Jul 23rd, 2018
111
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. int par[200005],ar[200005],a,b;
  4. int Find(int v)
  5. {
  6.     if(par[v]==v)return v;
  7.     return par[v]=Find(par[v]);
  8. }
  9. union_set(int u,int v)
  10. {
  11.     int a,b;
  12.     a=Find(u);
  13.     b=Find(v);
  14.     if(a!=b)
  15.     {
  16.         par[b]=a;
  17.         ar[a]+=ar[b];
  18.     }
  19. }
  20. int main()
  21. {
  22.     int t;
  23.     cin>>t;
  24.     while(t>0)
  25.     {
  26.         t--;
  27.         int n,k=1;;
  28.         cin>>n;
  29.         string a,b;
  30.         map<string,int>mp;
  31.         for(int i=0;i<n;i++)
  32.         {
  33.             cin>>a>>b;
  34.             if(mp.find(a)==mp.end())
  35.             {
  36.                 mp[a]=k;
  37.                 par[k]=k;
  38.                 ar[k]=1;
  39.                 k++;
  40.             }
  41.             if(mp.find(b)==mp.end())
  42.             {
  43.                 mp[b]=k;
  44.                 par[k]=k;
  45.                 ar[k]=1;
  46.                 k++;
  47.             }
  48.             union_set(mp[a],mp[b]);
  49.             cout<<ar[Find(mp[a])]<<endl;
  50.         }
  51.         memset(ar,0,sizeof(ar));
  52.     }
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement