#include<bits/stdc++.h>
using namespace std;
vector<int>adj[100005];
int s,d,ans;
int depth[2][100005];
void dfs(int u,int par,int _depth=0)
{
    depth[0][u]=_depth;
    for(int v:adj[u])
        if(v!=par)
            dfs(v,u,_depth+1);
}
int dfs2(int u,int par,int _depth=0)
{
    int mx=0;
    depth[1][u]=_depth;
    for(int v:adj[u])
        if(v!=par)
            mx=max(mx,dfs2(v,u,_depth+1));
    if(depth[1][u]>depth[0][u])
        ans=max(ans,depth[1][u]+mx);
    return ++mx;
}
int main()
{
    int n;
    cin>>n>>s>>d;
    for(int i=0;i<n-1;i++)
    {
        int u,v;
        cin>>u>>v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    dfs(s,0);
    int x=dfs2(d,0);
    cout<<ans-1<<endl;
    return 0;
}
