➤ Problem Link : 813C. The Tag Game
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
vector<int> adj[2*100000+1];
int disX[2*100000+1];
int ans=0;
void calcDisX(int v,int p,int d)
{
disX[v]=d;
for(int i=0;i<adj[v].size();i++)
{
if(adj[v][i]==p)
continue;
calcDisX(adj[v][i],v,d+1);
}
}
void findMoves(int v,int p,int d)
{
if(d>disX[v])
ans=max(ans,2*d);
for(int i=0;i<adj[v].size();i++)
{
if(adj[v][i]==p)
continue;
findMoves(adj[v][i],v,d+1);
}
}
int main()
{
int n,x,u,v;
cin>>n>>x;
for(int i=1;i<=n-1;i++)
{
cin>>u>>v;
adj[u].push_back(v);
adj[v].push_back(u);
}
calcDisX(x,-1,0);
findMoves(1,-1,0);
cout<<ans<<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!!
