n,u,v=(map(int,input().split()))
Graph=[]
for i in range(n):
    Graph.append([])
for i in range(n-1): #隣接頂点の登録
    a,b=map(int,input().split())
    Graph[a-1].append(b-1)
    Graph[b-1].append(a-1)

def dfs(G,s,d): #深さ優先探索(グラフ,スタート,深さ)
    mark[s]=1 #訪問済みを0から1にする
    depth[s]=d #今の深さを記録
    for i in Graph[s]: #隣接点に対して
        if mark[i]==0: #未訪問なら
            dfs(G,i,d+1) #深さを増やし、スタートを更新して再探索

depth=[0]*n
mark=[0]*n
for i in range(n):
    dfs(Graph,u-1,0)
dT=depth

depth=[0]*n
mark=[0]*n
for i in range(n):
    dfs(Graph,v-1,0)
dA=depth

dArrest=0
for i in range(n):
    if dA[i]>dT[i]>=dArrest: #Tが先に着ける点のうち
        dArrest=dA[i] #一番Aから遠い点
print(dArrest-1)