Advertisement
Saleh127

UVA 11503/Disjoint set

Aug 11th, 2021
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define test int tt; cin>>tt; for(int cs=1;cs<=tt;cs++)
  5.  
  6. map<string,string>parent;
  7. map<string,ll>siz;
  8. map<string,bool>frnd;
  9.  
  10. string findset(string v)
  11. {
  12. if (v == parent[v])
  13. {
  14. return v;
  15. }
  16. return parent[v] = findset(parent[v]);
  17. }
  18.  
  19. ll unionn(string a, string b)
  20. {
  21. a = findset(a);
  22. b = findset(b);
  23.  
  24. if(a==b) return siz[a];
  25. else
  26. {
  27. parent[b]=a;
  28. siz[a]+=siz[b];
  29. siz[b]=siz[a];
  30.  
  31. return siz[a];
  32. }
  33.  
  34. }
  35.  
  36. int main()
  37. {
  38. ios_base::sync_with_stdio(0);
  39. cin.tie(0);
  40. cout.tie(0);
  41.  
  42. string a,b;
  43.  
  44. ll n,m,i,j,k,l;
  45.  
  46. test
  47. {
  48. cin>>n;
  49. while(n--)
  50. {
  51. cin>>a>>b;
  52.  
  53. if(frnd[a]==0)
  54. {
  55. frnd[a]=1;
  56. parent[a]=a;
  57. siz[a]=1;
  58. }
  59. if(frnd[b]==0)
  60. {
  61. frnd[b]=1;
  62. parent[b]=b;
  63. siz[b]=1;
  64. }
  65.  
  66. cout<<unionn(a,b)<<endl;
  67. }
  68.  
  69. frnd.clear();
  70. parent.clear();
  71. siz.clear();
  72.  
  73. }
  74.  
  75.  
  76. return 0;
  77. }
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement