#include <bits/stdc++.h>
using namespace std;
const int maxn=112345;
int n,a,b,d[maxn],res,dd[maxn];
vector<int> G[maxn];
void dfs(int u,int fa,int dep) {
    d[u]=dep;
    for (int i=0;i<(int)G[u].size();++i) {
        int v=G[u][i];
        if (v==fa) continue;
        dfs(v,u,dep+1);
    }
}
void dfs2(int u,int fa,int dep) {
    dd[u]=dep;
    if ((int)G[u].size()==1) res=max(res,d[u]-(d[u]>dd[u]));
    for (int i=0;i<(int)G[u].size();++i) {
        int v=G[u][i];
        if (v==fa) continue;
        if (d[v]<=dep+1) continue;
        dfs2(v,u,dep+1);
    }
}
int main()
{
    scanf("%d%d%d",&n,&b,&a);
    for (int i=0;i<n-1;++i) {
        int a,b;scanf("%d%d",&a,&b);
        G[a].push_back(b);
        G[b].push_back(a);
    }
    dfs(a,-1,0);
    dfs2(b,-1,0);
    printf("%d\n",res);
    return 0;
}
