#include <bits/stdc++.h>
using namespace std;
double memo[1005][1005][2];
double p(int w, int b, int qui) {
  if (b < 0 or w < 0) return 0;
  if (b == 0) {
    if (w > 0)
      return 1.;
    else
      return qui;
  } else if (w == 0)
    return qui;
  double &ans = memo[w][b][qui];
  double pw = double(w) / (w + b);
  double pb = double(b) / (w + b);
  if (ans >= 0) return ans;
  if (!qui)
    return ans = pw + pb * (1 - p(w, b - 1, 1));
  else {
    double pp = double(w) / (w + b - 1);
    return ans = pw + pb * (pp * (1 - p(w - 1, b - 1, 0)) +
                            (1 - pp) * (1 - p(w, b - 2, 0)));
  }
}
int main() {
  cout.setf(ios::fixed);
  cout.precision(10);
  memset(memo, -1, sizeof(memo));
  int w, b;
  cin >> w >> b;
  cout << p(w, b, 0) << endl;
}
