#include <iostream>
#include<bits/stdc++.h>
using namespace std;
vector<vector<int>>g;
vector<int>used;

void dfs(int cur,int d,vector<int>&h)
{
    h[cur]=d;
    used[cur]=1;
    for(auto x:g[cur])
    {
        if(!used[x])
        {
            dfs(x,d+1,h);
        }
    }
}



int main() {
	// your code goes here
	ios_base::sync_with_stdio(false);
    cin.tie(0);
	int n,u,v;
	cin>>n>>u>>v;
	u--;
	v--;
	vector<int>hu(n),hv(n);
	g.resize(n);
	used.resize(n);
	for(int i=0;i<n-1;i++)
	{
	    int a,b;
	    cin>>a>>b;
	    a--;
	    b--;
	    g[a].push_back(b);
	    g[b].push_back(a);
	    
	}
	
	//fill(used.begin(),used.end(),0);
	dfs(u,0,hu);
	fill(used.begin(),used.end(),0);
	dfs(v,0,hv);
	int ans=0;
	for(int i=0;i<n;i++)
	{
	    if(hv[i]>hu[i])
	    {
	        ans=max(ans,hv[i]-1);
	    }
	}
	
	cout<<ans;
	
	return 0;
}
