#include <bits/stdc++.h>
using namespace std;
double dp[(1000 + 10)][(1000 + 10)];
bool vis[(1000 + 10)][(1000 + 10)];
double DP(int w, int b) {
  if (b == 0) return 1.0;
  if (b == 1) return w / (w + 1.0);
  if (vis[w][b]) return dp[w][b];
  vis[w][b] = 1;
  dp[w][b] = 0;
  if (b >= 3)
    dp[w][b] = b * (b - 1.0) * (b - 2.0) / (w + b * 1.0) / (w + b - 1.0) /
               (w + b - 2.0) * DP(w, b - 3);
  if (b >= 2 && w >= 1)
    dp[w][b] += b * (b - 1.0) * (w) / (w + b * 1.0) / (w + b - 1.0) /
                (w + b - 2.0) * DP(w - 1, b - 2);
  if (w + b > 0) dp[w][b] += w / (w + b + 0.0);
  return dp[w][b];
}
int main() {
  int w, b;
  while (~scanf("%d%d", &w, &b)) {
    if (w == 0 && b == 0) {
      printf("%.10lf\n", 0.0);
      continue;
    }
    printf("%.10lf\n", DP(w, b));
  }
}
