Saleh127

UVA 10583 / Disjoint Set Union

Aug 12th, 2021
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 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. ans--;
  32.  
  33. parent[b]=a;
  34.  
  35. //siz[a]+=siz[b];
  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.  
  51. while(cin>>n>>m && (n+m)>0)
  52. {
  53. for(i=0; i<n+4; i++)
  54. {
  55. parent[i]=i;
  56. //siz[i]=0;
  57. }
  58.  
  59. ans=n;
  60.  
  61. while(m--)
  62. {
  63. cin>>a>>b;
  64.  
  65. unionn(a,b);
  66. }
  67.  
  68. cout<<"Case "<<k++<<": "<<ans<<endl;
  69.  
  70. //frnd.clear();
  71. parent.clear();
  72. //siz.clear();
  73.  
  74. }
  75.  
  76. return 0;
  77. }
  78.  
  79.  
Advertisement
Add Comment
Please, Sign In to add comment