#include <bits/stdc++.h>
using namespace std;
map<pair<int, int>, double> imap;
double rec(int n, int m, int k) {
  pair<int, int> ags = make_pair(n, m);
  if (imap.find(ags) != imap.end()) {
    return imap[ags];
  }
  double ans = 0.00;
  if (n <= 0) return 0;
  if (m <= 0 && k % 2 == 1) return 1;
  if (m <= 0 && k % 2 == 0) return 0;
  double a = n, b = m;
  if (k % 2 == 1) {
    int p = k + 1;
    ans = a / (a + b) + (b / (a + b)) * rec(n, m - 1, p);
    imap[ags] = ans;
    return ans;
  } else {
    int p = k + 1;
    ans = (b / (a + b)) * ((b - 1) / (a + b - 1) * rec(n, m - 2, p) +
                           (a) / (a + b - 1) * rec(n - 1, m - 1, p));
    imap[ags] = ans;
    return ans;
  }
}
int main() {
  int n, m;
  scanf("%d", &n);
  scanf("%d", &m);
  int k = 1;
  double ans = rec(n, m, k);
  cout.precision(14);
  cout.setf(ios::fixed | ios::showpoint);
  cout << ans << endl;
}
