➤ Problem Link : PT07Z
👉 Hint : Use DFS
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; vector<int> arr[10002]; bool visited[10002]; pair<int,int> dfsLong(int v) { int max1=0; int max2=0; pair<int,int> child; int val=0; visited[v]=1; if(arr[v].size()==0) return make_pair(1,1); for(int i=0;i<arr[v].size();i++) { if(!visited[arr[v][i]]) { child=dfsLong(arr[v][i]); if(child.second>max1) { max2=max1; max1=child.second; } else if(child.second>max2) max2=child.second; val=max(val,child.first); } } val=max(val,1+max1+max2); return make_pair(val,1+max1); } int main() { int u,v,n; cin>>n; memset(arr,0,sizeof(arr)); memset(visited,0,sizeof(visited)); for(int i=1;i<n;i++) { cin>>u>>v; arr[u].push_back(v); arr[v].push_back(u); } for(int i=1;i<=10002;i++) { if(arr[i].size()!=0) { cout<<dfsLong(i).first-1; break; } } }
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!!