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