➤ Problem Link : 277A. Learning Languages
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; int parent[101]; bool zero[101]; int find(int v) { if(parent[v]==v) return v; return parent[v]=find(parent[v]); } int main() { int n,m,a,b; cin>>n>>m; memset(zero,0,sizeof(zero)); unordered_map<int,vector<int> > mp; for(int i=1;i<=n;i++) parent[i]=i; for(int i=1;i<=n;i++) { int c,lang; cin>>c; if(c==0) zero[i]=1; for(int j=0;j<c;j++) { cin>>lang; for(int k=0;k<mp[lang].size();k++) { a=find(i); b=find(mp[lang][k]); if(a!=b) parent[b]=a; } mp[lang].push_back(i); } } int cnt=0; int zct=0; for(int i=1;i<=n;i++) { if(zero[i]) zct++; else if(parent[i]==i) cnt++; } if(cnt>0) cout<<cnt-1+zct<<"\n"; else cout<<zct<<"\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!!