#include <bits/stdc++.h>
using namespace std;
double state[1001][1001];
bool found[1001][1001];
double find(int w, int b) {
  if (w <= 0)
    return 0;
  else if (b == 0)
    return 1;
  else if (b == 1)
    return double(w) / (b + w);
  else if (b == 2)
    return double(w) / (b + w) + double(b) / (b + w) * double(b - 1) /
                                     (b + w - 1) * double(w) / (b + w - 2) *
                                     find(w - 1, b - 2);
  if (found[w][b]) return state[w][b];
  state[w][b] = double(w) / (b + w) +
                double(b) / (b + w) * double(b - 1) / (b + w - 1) * double(w) /
                    (b + w - 2) * find(w - 1, b - 2) +
                double(b) / (b + w) * double(b - 1) / (b + w - 1) *
                    double(b - 2) / (b + w - 2) * find(w, b - 3);
  found[w][b] = true;
  return state[w][b];
}
int main(void) {
  int w, b;
  cin >> w >> b;
  cout.precision(11);
  cout << fixed << find(w, b) << endl;
  return 0;
}
