➤ 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!!
