#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int max_n=100005;
int n,x,y;
vector<int> G[max_n];
void dfs(int u,int fa,int d[]){
    for(auto v:G[u]){
        if(v==fa)continue;
        d[v]=d[u]+1;
        dfs(v,u,d);
    }
}
int dx[max_n],dy[max_n];
void work(int x,int d[]){
    d[x]=0;
    dfs(x,0,d);
}
int main(){
    scanf("%d%d%d",&n,&x,&y);
    for(int i=1;i<n;i++){
        int u,v;scanf("%d%d",&u,&v);
        G[u].push_back(v);
        G[v].push_back(u);
    }
    dfs(x,0,dx);
    dfs(y,0,dy);
    int ans=0;
    for(int i=1;i<=n;i++){
        if(dx[i]<=dy[i])ans=max(ans,dy[i]-1);
    }
    printf("%d\n",ans);
    return 0;
}