➤ Problem Link : 1263D. Secret Passwords
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; int parent[200001]; int find(int v) { if(parent[v]==v) return v; return parent[v]=find(parent[v]); } int main() { int n,a,b; cin>>n; for(int i=1;i<=n;i++) parent[i]=i; string s; unordered_set<int> hash[27]; for(int i=1;i<=n;i++) { cin>>s; for(int j=0;j<s.length();j++) hash[s[j]-'a'].insert(i); } for(int i=0;i<27;i++) { auto it=hash[i].begin(); if(it==hash[i].end()) continue; auto it2=it; it2++; for(;it2!=hash[i].end();it++,it2++) { a=find(*it); b=find(*it2); if(a!=b) parent[a]=b; } } int cnt=0; for(int i=1;i<=n;i++) if(parent[i]==i) cnt++; cout<<cnt<<"\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!!