#include <bits/stdc++.h>
#define ll long long int
#define pb push_back

using namespace std;

vector<vector<int>> g;
vector<bool> vs;
vector<int> dst[2];

void dfs(int v, int d){
	vs[v] = true;
	for(auto e : g[v]){
		if(!vs[e]){
			dst[d][e] = dst[d][v]+1;
			dfs(e,d);
		}
	}
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n,u,v,a,b;
	scanf("%d%d%d", &n, &u, &v);
	dst[0].resize(n+1);
	dst[1].resize(n+1);
	g.resize(n+1);
	vs.assign(n+1, false);
	for(int i = 0; i < n-1; ++i){
		scanf("%d%d", &a,&b);
		g[a].pb(b);
		g[b].pb(a);
	}
	dst[0][u] = 0;
	dst[1][v] = 0;
	dfs(u, 0);
	vs.assign(n+1, false);
	dfs(v,1);
	int ans = 0;
	for(int i = 1; i <= n; ++i){
		if(dst[1][i] > dst[0][i]) {
			ans = max(ans,dst[1][i]);
		}
	}
	printf("%d\n", ans-1);
	return 0;
}
