#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
int N,T,A;
vector<int>G[1<<17];
vector<int>dist(int s)
{
	vector<int>ret(N,1<<20);
	ret[s]=0;
	queue<int>P;
	P.push(s);
	while(!P.empty())
	{
		int u=P.front();P.pop();
		for(int v:G[u])
		{
			if(ret[v]>ret[u]+1)
			{
				ret[v]=ret[u]+1;
				P.push(v);
			}
		}
	}
	return ret;
}
int main()
{
	cin>>N>>T>>A;
	for(int i=1;i<N;i++)
	{
		int u,v;cin>>u>>v;u--,v--;
		G[u].push_back(v);
		G[v].push_back(u);
	}
	vector<int>td=dist(T-1),ad=dist(A-1);
	int ans=0;
	for(int i=0;i<N;i++)
	{
		if(td[i]<ad[i])
		{
			ans=max(ans,td[i]+(ad[i]-td[i])-1);
		}
	}
	cout<<ans<<endl;
}
