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