#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
int dx[] = {1, -1, 0, 0, 1, 1, -1, -1};
int dy[] = {0, 0, 1, -1, 1, -1, 1, -1};
int w, b;
double dp[N][N][2];
double p(int x, int y, int player) {
  if (x && !y) return !player;
  if (!x && y) return 0;
  if (!x && !y) return 0;
  double &ret = dp[x][y][player];
  if (ret == ret) return ret;
  double l = x, m = y;
  if (!player)
    return ret = (l / (l + m) + (m / (l + m)) * p(x, y - 1, 1));
  else
    return ret = ((m / (l + m)) * (((y >= 2 ? p(x, y - 2, 0) : 0) * (m - 1) +
                                    p(x - 1, y - 1, 0) * l) /
                                   (l + m - 1 > 0 ? l + m - 1 : 1)));
}
int main() {
  scanf("%d %d", &w, &b);
  memset(dp, -1, sizeof(dp));
  cout << fixed << setprecision(9) << p(w, b, 0);
}
