#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000009;
const int MOD = 1000000007;
double memo[2][1005][1005];
double dp(int turn, int b, int w) {
  if (b < 0 || w < 0) return 0;
  if (b == 0) {
    if (w > 0)
      if (turn == 1) return 1;
    return 0;
  }
  if (w == 0) return 0;
  if (memo[turn][b][w] > 1e-9) {
    return memo[turn][b][w];
  }
  double res = 0;
  int tot = b + w;
  if (turn) {
    res += (b * 1.0 / tot) * dp(!turn, b - 1, w);
    res += (w * 1.0 / tot);
  } else {
    res += (b * 1.0 / tot) * (w * 1.0 / (tot - 1)) * dp(!turn, b - 1, w - 1);
    res += (b * 1.0 / tot) * ((b - 1) * 1.0 / (tot - 1)) * dp(!turn, b - 2, w);
  }
  return memo[turn][b][w] = res;
}
int main() {
  int w, b;
  memset(memo, -1, sizeof memo);
  scanf("%d %d", &w, &b);
  printf("%.10lf\n", dp(1, b, w));
  return 0;
}
