#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll read(){
	ll a=0,b=getchar(),c=1;
	while(!isdigit(b))c=b=='-'?-1:1,b=getchar();
	while(isdigit(b))a=a*10+b-'0',b=getchar();
	return a*c;
}
int n,u,v,ans,d[2][100005];
vector<int> g[100005];
void dfs(int x,int y,int w){
    for(int i=0;i<g[x].size();i++){
    	int z=g[x][i];
		if(z!=y)d[w][z]=d[w][x]+1,dfs(z,x,w);
    }
}
int main(){
	n=read(),u=read(),v=read();
    for(int i=0;i<n-1;i++){
    	int x=read(),y=read();
		g[x].push_back(y),g[y].push_back(x);
    }
    dfs(u,-1,0),dfs(v,-1,1);
    for(int i=1;i<=n;i++){
		if(d[0][i]<d[1][i])
		    ans=max(ans,d[1][i]-1);
    }
    printf("%d",ans);
	return 0;
}