#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int dis[100001][2];
vector<vector<int>> g;
void dfs(int c,int pr,int d,int ind)
{
	dis[c][ind]=d;
	for(auto x:g[c])
	{//cout<<c<<" "<<x<<endl;
		if(x!=pr)
		dfs(x,c,d+1,ind);
	}
	
}
int main()
{	
    
  
	int a,b,n,u,v;
    memset(dis,0,sizeof(dis));

	cin>>n>>u>>v;
	    u--;v--;
	g.assign(n,vector<int>());
	for(int i=0;i<n-1;i++)
	{
		cin>>a>>b;
		a--;b--;
		g[a].push_back(b);
		g[b].push_back(a);
			
	}
	dfs(u,u,0,0);
	dfs(v,v,0,1);
	int ans=0;
	for(int i=0;i<n;i++)
	{
		if(dis[i][0]<dis[i][1])
		ans=max(ans,dis[i][1]-1);
	}
	cout<<ans<<endl;
	return 0;
}