#include <bits/stdc++.h>
using namespace std;
const long long maxn = 100100;
long long n;
long long s, t;
vector<long long> g[maxn];
long long d[maxn][2];
long long ans;
void dfs(long long v, long long par, long long r) {
  for (long long u : g[v])
    if (u != par) {
      d[u][r] = d[v][r] + 1;
      dfs(u, v, r);
    }
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> t >> s;
  s--, t--;
  for (long long i = 0; i < n - 1; i++) {
    long long v, u;
    cin >> v >> u;
    v--, u--;
    g[v].push_back(u);
    g[u].push_back(v);
  }
  dfs(s, -1, 0);
  dfs(t, -1, 1);
  for (long long i = 0; i < n; i++)
    if (d[i][0] > d[i][1]) ans = max(ans, d[i][1] + (d[i][0] - d[i][1]) / 2);
  cout << ans << endl;
  return 0;
}
