#include <bits/stdc++.h>
#define rep(i,n) for(int i=0; i<n; i++)
#define PI 3.14159265359
#define INF 1000100100
#define all(x) (x).begin(),(x).end()
typedef long long ll;
#define P pair<ll, ll>
#define PP pair<P,P>
using namespace std;
vector<vector<int> > ki;
vector<int> pat;
vector<int> p;

int pt(int now,int pa){
    if(!ki[now].size()){
        pat[now]=0;
        return 0;
    }
    int tmp=0;
    rep(i,ki[now].size()){
        if(ki[now[i]==pa]) continue;
        p[ki[now][i]]=now;
        tmp=max(pt(ki[now][i],now)+1,tmp);
    }
    pat[now]=tmp;
    return pat[now];
}

int main(){
  	int n,u,v; cin >> n >> u >> v;
    u--; v--;
    ki.resize(n);
    pat.resize(n);
    visited.resize(n);
    p.resize(n);
    rep(i,n-1){
        int a,b; cin >> a >> b;
        a--; b--;
        ki[a].push_back(b);
        ki[b].push_back(a);
        visited[i]=0;
    }
    int d=pt(v,-1);
    int dis=0;
    int tmpu=u;
    while(tmpu!=v){
        tmpu=p[tmpu];
        dis++;
    }
    int md=0;
    tmpu=u;
    int nowdis=dis;
    rep(i,((dis-1)/2)+1){
        if(md<=pat[tmpu]+nowdis-1+i){
            md=pat[tmpu]+nowdis-1+i;
        }
        tmpu=p[tmpu];
        nowdis-=2;
    }
    cout << md << endl;
return 0;
}


