Advertisement
Saleh127

UVA 10608 / Disjoint set union

Aug 12th, 2021
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 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<ll,ll>parent;
  7. map<ll,ll>siz;
  8. map<ll,bool>frnd;
  9. ll ans;
  10.  
  11. ll findset(ll v)
  12. {
  13. if (v == parent[v])
  14. {
  15. return v;
  16. }
  17. return parent[v] = findset(parent[v]);
  18. }
  19.  
  20. void unionn(ll a,ll b)
  21. {
  22. a = findset(a);
  23. b = findset(b);
  24.  
  25. if(a==b) return;
  26.  
  27. else
  28. {
  29. if(siz[a]<siz[b]) swap(a,b);
  30.  
  31. parent[b]=a;
  32.  
  33. siz[a]+=siz[b];
  34.  
  35. return;
  36. }
  37. }
  38.  
  39. int main()
  40. {
  41. ios_base::sync_with_stdio(0);
  42. cin.tie(0);
  43. cout.tie(0);
  44.  
  45. ll a,b;
  46.  
  47. ll n,m,i,j,k=1,l;
  48.  
  49.  
  50. test
  51. {
  52. cin>>n>>m;
  53.  
  54. for(i=0; i<n+4; i++)
  55. {
  56. parent[i]=i;
  57. siz[i]=1;
  58. }
  59.  
  60. ans=INT_MIN;
  61.  
  62. while(m--)
  63. {
  64. cin>>a>>b;
  65.  
  66. unionn(a,b);
  67. }
  68.  
  69. for(i=1;i<=n;i++)
  70. {
  71. ans=max(ans,siz[i]);
  72. }
  73.  
  74. cout<<ans<<endl;
  75.  
  76. parent.clear();
  77. siz.clear();
  78.  
  79. }
  80.  
  81. return 0;
  82. }
  83.  
  84.  
  85.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement