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