#include <bits/stdc++.h>
using namespace std;
const int mx = 1005;
bool vis[mx][mx][2];
double dp[mx][mx][2];
double func(int white, int black, int turn) {
  if (white <= 0) {
    return 0.0;
  }
  if (black <= 0) {
    if (!turn) return 1.0;
    return 0.0;
  }
  if (vis[white][black][turn]) return dp[white][black][turn];
  double up, down, p, q, r, ans, x, y;
  if (!turn) {
    up = white;
    down = (double)white + black;
    ans = up / down;
    p = (1.0 - ans);
    ans += p * func(white, black - 1, 1);
  } else {
    up = black;
    down = white + black;
    p = up / down;
    black--;
    q = 0.0;
    x = 0.0;
    if (black) {
      up = black;
      down = black + white;
      q = up / down;
      x = q * func(white, black - 1, 0);
    }
    r = (1.0 - q);
    y = r * func(white - 1, black, 0);
    ans = p * (x + y);
  }
  vis[white][black][turn] = 1;
  return dp[white][black][turn] = ans;
}
int main() {
  int b, w;
  scanf("%d %d", &w, &b);
  memset(vis, 0, sizeof(vis));
  double ans = func(w, b, 0);
  printf("%.15lf\n", ans);
  return 0;
}
