from collections import deque

N,u,v=map(int,input().split()) # u,vから1を引く必要がある
a=[[] for _ in range(N)] # 0-initial
for _ in range(N-1):
    Ai,Bi=map(int,input().split())
    a[Ai-1].append(Bi-1)
    a[Bi-1].append(Ai-1)
T=u-1;A=v-1

# 方針
# Tは，Tからの距離dTがAからの距離dA以下であるような点のうち，最もdAが大きい点を目指す。
dT=[-1]*N
q=deque()
q.append(T);dT[T]=0
while q:
    u=q.popleft()
    for v in a[u]:
        if dT[v]==-1:
            dT[v]=dT[u]+1
            q.append(v)

dA=[-1]*N
q=deque()
q.append(A);dA[A]=0
while q:
    u=q.popleft()
    for v in a[u]:
        if dA[v]==-1:
            dA[v]=dA[u]+1
            q.append(v)   


print(a)
print(dT)
print(dA)

ans=0
if a[T]!=[A] and T!=A:
    for i in range(N):
        if dT[i]<dA[i] and ans<dA[i]-1:
            ans=dA[i]-1

print(ans)