#include <bits/stdc++.h>
using namespace std;
typedef double ld;
map<pair<int, int>, double> memo;
ld solve(int W, int B) {
  if (W <= 0) {
    return 0;
  }
  if (B <= 0) {
    return 1;
  }
  pair<int, int> pair = make_pair(W, B);
  if (memo.find(pair) != memo.end()) {
    return memo[pair];
  }
  ld ans = (1.0 * W / (W + B));
  ld multiply = (1.0 * B / (W + B));
  multiply *= (1.0 * (B - 1) / (W + B - 1));
  if (multiply > 1e-10) {
    ld whiteJump = solve(W - 1, B - 2) * (1.0 * W / (W + B - 2));
    ld blackJump = solve(W, B - 3) * (1.0 * (B - 2) / (W + B - 2));
    ld add = multiply * (whiteJump + blackJump);
    ans += add;
  }
  memo[pair] = ans;
  return ans;
}
int main() {
  int w, b;
  cin >> w >> b;
  ld ans = solve(w, b);
  printf("%.9f\n", ans);
  return 0;
}
