#include<bits/stdc++.h>

using namespace std;

const int maxn=2e5+5;

int n,u,v,dis1[maxn],dis2[maxn],ans,cnt;
int head[maxn],ver[maxn],nxt[maxn];

inline void add(int x,int y){
	nxt[++cnt]=head[x];
	head[x]=cnt;
	ver[cnt]=y;
}

inline void dfs1(int x,int fa){
	for(int i=head[x];i;i=nxt[i]){
		int y=ver[i];
		if(y==fa) continue;
		dis1[y]=dis1[x]+1;
		dfs1(y,x);
	}
}

inline void dfs2(int x,int fa){
	for(int i=head[x];i;i=nxt[i]){
		int y=ver[i];
		if(y==fa) continue;
		dis2[y]=dis2[x]+1;
		dfs2(y,x);
	}
}
int main(){
	cin>>n>>u>>v;
	for(int i=1;i<n;i++){
		int x,y;
		cin>>x>>y;
		add(x,y);add(y,x);
	}
	dfs1(u,0);
	dfs2(v,0);
	for(int i=1;i<=n;i++){
		if(dis1[i]<dis2[i]) ans=max(ans,dis2[i]-1);
	}
	cout<<ans<<endl;
	return 0;
}





