813C. The Tag Game - Codeforces Solution C++

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