#include <bits/stdc++.h>
using namespace std;
vector<vector<pair<bool, double>>> dp[2];
double probGanhar(int w, int b, bool princesaJogando = true) {
  if (w == 0) {
    return princesaJogando == false;
  }
  if (b == 0) {
    return 1;
  }
  if (dp[princesaJogando][w][b].first) {
    return dp[princesaJogando][w][b].second;
  }
  double percentW = ((double)w) / (w + b);
  double prob = percentW;
  b--;
  double probOutroGanhar = 0;
  if (princesaJogando) {
    prob += (1 - percentW) * (1 - probGanhar(w, b, !princesaJogando));
  } else {
    double probBrancoSair = ((double)w) / (w + b);
    probOutroGanhar = probBrancoSair * probGanhar(w - 1, b, !princesaJogando);
    if (b != 0)
      probOutroGanhar +=
          (1 - probBrancoSair) * probGanhar(w, b - 1, !princesaJogando);
    double probEuGanharOutrasJogadas = 1 - probOutroGanhar;
    prob += (1 - percentW) * probEuGanharOutrasJogadas;
  }
  dp[princesaJogando][w][b + 1] = pair<bool, double>(true, prob);
  return prob;
}
int main() {
  int w, b;
  cin >> w >> b;
  dp[0] = dp[1] = vector<vector<pair<bool, double>>>(
      w + 2, vector<pair<bool, double>>(b + 2, pair<bool, double>(false, 0.0)));
  cout << setprecision(15) << probGanhar(w, b) << endl;
}
