#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
const int MOD = 1e9 + 7;
long long n, m, dp[N][N][2];
map<pair<int, int>, double> memo;
double p_win_1_rec(int W, int B) {
  if (W <= 0) return 0;
  if (B <= 0) return 1;
  pair<int, int> args = make_pair(W, B);
  if (memo.find(args) != memo.end()) {
    return memo[args];
  }
  double ret = W * 1.0 / (W + B), cont_prob = B * 1.0 / (W + B);
  B--;
  cont_prob *= B * 1.0 / (W + B);
  B--;
  if (cont_prob > 1e-13) {
    double p_black = p_win_1_rec(W, B - 1) * (B * 1.0 / (W + B));
    double p_white = p_win_1_rec(W - 1, B) * (W * 1.0 / (W + B));
    ret += cont_prob * (p_black + p_white);
  }
  memo[args] = ret;
  return ret;
}
int main() {
  scanf("%lld%lld", &n, &m);
  printf("%0.15f\n", p_win_1_rec(n, m));
  return 0;
}
