#include <bits/stdc++.h>
using namespace std;
const int maxn = 1005;
int a, b;
double dp[maxn][maxn];
bool vis[maxn][maxn];
double dfs(int x, int y) {
  if (!x) {
    return 0;
  }
  if (!y) {
    return 1.0;
  }
  if (vis[x][y]) return dp[x][y];
  double &ans = dp[x][y];
  ans = 0;
  double temp = x * 1.0 / (x + y);
  ans += temp;
  if (y >= 2) {
    double res = x * 1.0 / (x + y - 2);
    ans += (1 - temp) * ((y - 1) * 1.0 / (x + y - 1)) * dfs(x - 1, y - 2) * res;
    if (y >= 3) {
      ans += (1 - temp) * ((y - 1) * 1.0 / (x + y - 1)) * dfs(x, y - 3) *
             (1 - res);
    }
  }
  vis[x][y] = 1;
  return ans;
}
int main() {
  scanf("%d%d", &a, &b);
  printf("%.9lf\n", dfs(a, b));
  return 0;
}
