#include <bits/stdc++.h>
using namespace std;
double dp[1001][1001][2];
double f(int w, int b, int x) {
  if (dp[w][b][x] > -0.5) {
    return dp[w][b][x];
  }
  if (w == 0) {
    dp[w][b][x] = 0.0;
    return 0.0;
  }
  double ret = 0.0;
  if (x == 1) {
    ret += (double)w / (double)(w + b);
    if (b > 0) {
      double p = (double)b / (double)(w + b);
      ret += p * f(w, b - 1, 0);
    }
  } else {
    if (b > 0) {
      double p = (double)b / (double)(w + b);
      if (w > 0) {
        double q = (double)w / (double)(w + b - 1);
        ret += p * q * f(w - 1, b - 1, 1);
      }
      if (b > 1) {
        double q = (double)(b - 1) / (double)(w + b - 1);
        ret += p * q * f(w, b - 2, 1);
      }
    }
  }
  dp[w][b][x] = ret;
  return ret;
}
int main() {
  int w, b;
  cin >> w >> b;
  for (int i = 0; i <= w; ++i)
    for (int j = 0; j <= b; ++j)
      for (int k = 0; k < 2; ++k) dp[i][j][k] = -1.0;
  double ret = f(w, b, 1);
  cout.setf(ios::fixed);
  cout.precision(11);
  cout << ret << endl;
  return 0;
}
