➤ Problem Link : 217A. Ice Skating
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; int parent[101]; int find(int v) { if(parent[v]==v) return v; return parent[v]=find(parent[v]); } int main() { int n; cin>>n; for(int i=1;i<=n;i++) parent[i]=i; unordered_map<int,vector<int> > xmp,ymp; int x,y; int a,b; for(int i=1;i<=n;i++) { cin>>x>>y; for(int j=0;j<xmp[x].size();j++) { a=find(i); b=find(xmp[x][j]); if(a != b) parent[a]=b; } for(int j=0;j<ymp[y].size();j++) { a=find(i); b=find(ymp[y][j]); if(a != b) parent[a]=b; } xmp[x].push_back(i); ymp[y].push_back(i); } int ans=0; for(int i=1;i<=n;i++) { if(parent[i]==i) ans++; } cout<<ans-1<<"\n"; }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!