➤ Problem Link : TAP2013C
👉 Hint : edit please
✅ C++ Solution :
 
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
vector<int> adj[30001];
bool visited[30001];
pair<ll,ll> dp[30001];
ll dpval[30001];
ll value=0;
pair<ll,ll> dfs(int v,int t)
{
	ll ans=0,maxi=0;
	if(v==t)
	{
		return dp[v]=make_pair(1,1);
	}	
	visited[v]=1;
	for(int i=0;i<adj[v].size();i++)
	{
		if(!visited[adj[v][i]])
		    dp[adj[v][i]]=dfs(adj[v][i],t);
		maxi=max(maxi,dp[adj[v][i]].second);
	    ans=ans+dp[adj[v][i]].first;
	}
	dp[v].first=ans;
    dp[v].second=maxi+ans;
	return dp[v];
}
int main()
{
	value=0;
	int n,s,x,y;
	cin>>n>>s;
	for(int i=1;i<=n;i++)
		adj[i].clear();
	for(int i=1;i<=s;i++)
	{
		cin>>x>>y;
		adj[x].push_back(y);
	}
	memset(visited,0,sizeof(visited));
	
	dfs(1,n);
	cout<<dp[1].second<<endl;
}
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!!
