#include <bits/stdc++.h>
using namespace std;
template <class T1>
void deb(T1 e1) {
  cout << e1 << "\n";
}
template <class T1, class T2>
void deb(T1 e1, T2 e2) {
  cout << e1 << " " << e2 << "\n";
}
template <class T1, class T2, class T3>
void deb(T1 e1, T2 e2, T3 e3) {
  cout << e1 << " " << e2 << " " << e3 << "\n";
}
template <class T1, class T2, class T3, class T4>
void deb(T1 e1, T2 e2, T3 e3, T4 e4) {
  cout << e1 << " " << e2 << " " << e3 << " " << e4 << "\n";
}
template <class T1, class T2, class T3, class T4, class T5>
void deb(T1 e1, T2 e2, T3 e3, T4 e4, T5 e5) {
  cout << e1 << " " << e2 << " " << e3 << " " << e4 << " " << e5 << "\n";
}
template <class T1, class T2, class T3, class T4, class T5, class T6>
void deb(T1 e1, T2 e2, T3 e3, T4 e4, T5 e5, T6 e6) {
  cout << e1 << " " << e2 << " " << e3 << " " << e4 << " " << e5 << " " << e6
       << "\n";
}
double memo[1010][1010];
double s(int w, int b) {
  if (w <= 0) return 0.0;
  if (b <= 0) return 1.0;
  double &ret = memo[w][b];
  if (ret != -1) return ret;
  ret = w * 1.0 / (w + b);
  double cont_prob = b * 1.0 / (w + b);
  b--;
  cont_prob *= b * 1.0 / (w + b);
  b--;
  if (cont_prob > 1e-13) {
    double p_black = s(w, b - 1) * (b * 1.0 / (w + b));
    double p_white = s(w - 1, b) * (w * 1.0 / (w + b));
    ret += cont_prob * (p_black + p_white);
  }
  return ret;
}
int main() {
  int w, b;
  scanf("%d %d", &w, &b);
  for (int i = 0; i <= 1000; i++)
    for (int j = 0; j <= 1000; j++) memo[i][j] = -1.0;
  printf("%.10lf\n", s(w, b));
  return 0;
}
