➤ Problem Link : TFRIENDS
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int #define pb push_back vector<int> adj[100005]; vector<int> adj2[100005]; bool visited[100005]; void dfs(int v, stack<int> &s) { for(int i=0;i<adj[v].size();i++) { if(!visited[adj[v][i]]) { visited[adj[v][i]]=1; dfs(adj[v][i],s); } } s.push(v); } void dfs2(int v) { for(int i=0;i<adj2[v].size();i++) { if(!visited[adj2[v][i]]) { visited[adj2[v][i]]=1; dfs2(adj2[v][i]); } } } int main() { int t; cin>>t; while(t--) { int n; cin>>n; for(int i=0;i<n;i++) { adj[i].clear(); adj2[i].clear(); visited[i]=0; } for(int i=0;i<n;i++) { string s; cin>>s; for(int j=0;j<s.length();j++) { if(i==j) continue; if(s[j]=='Y') { adj[i].pb(j); adj2[j].pb(i); } } } stack<int> s; for(int i=0;i<n;i++) { if(!visited[i]) { visited[i]=1; dfs(i,s); } } for(int i=0;i<n;i++) visited[i]=0; int ans=0,v; while(!s.empty()) { v=s.top(); s.pop(); if(visited[v]) continue; ans++; visited[v]=1; dfs2(v); } cout<<ans<<"\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!!