#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
vector<int> G[N];
int dep[N],maxson[N],f[N];
void dfs(int u,int fa) {
	f[u]=fa;
	for(auto v:G[u]) {
		if(v==fa) continue;
		dep[v]=dep[u]+1;
		dfs(v,u);
		maxson[u]=max(maxson[u],maxson[v]);
	}
	maxson[u]++;
}
int main() {
	int n,s,e;
	scanf("%d%d%d",&n,&s,&e);
	for(int i=1,u,v;i<n;i++) {
		scanf("%d%d",&u,&v);
		G[u].push_back(v);
		G[v].push_back(u);
	}
	dfs(e,-1);
	for(int i=1;i<=n;i++) maxson[i]--;
	int t=(dep[s]+1)/2,ans=0;
	for(int i=s;t;t--,i=f[i]) {
		ans=max(ans,dep[i]+maxson[i]-1);
	}
	printf("%d\n",ans);
	return 0;
}