#include <bits/stdc++.h>
using namespace std;
int sz[100010], dep[100010], n;
long long f[100010], all[100010];
int fa[100010][20];
int a[100010], b[100010];
vector<int> g[100010];
void dfs(int u, int pu) {
  sz[u] = 1;
  f[u] = 0;
  dep[u] = dep[pu] + 1;
  fa[u][0] = pu;
  for (int i = 1; i < 20; i++) {
    fa[u][i] = fa[fa[u][i - 1]][i - 1];
  }
  for (auto v : g[u]) {
    if (v == pu) {
      continue;
    }
    dfs(v, u);
    sz[u] += sz[v];
    f[u] += f[v] + sz[v];
  }
}
void dfs2(int u, int pu) {
  for (auto v : g[u]) {
    if (v == pu) {
      continue;
    }
    all[v] = all[u] - sz[v] + n - sz[v];
    dfs2(v, u);
  }
}
int getLca(int u, int v) {
  if (dep[u] < dep[v]) {
    swap(u, v);
  }
  int dh = dep[u] - dep[v];
  for (int i = 19; i >= 0; i--) {
    if (dh & (1 << i)) {
      u = fa[u][i];
    }
  }
  if (u == v) {
    return u;
  }
  for (int i = 19; i >= 0; i--) {
    if (fa[u][i] != fa[v][i]) {
      u = fa[u][i];
      v = fa[v][i];
    }
  }
  return fa[u][0];
}
int jump(int u, int dh) {
  for (int i = 19; i >= 0; i--) {
    if (dh & (1 << i)) {
      u = fa[u][i];
    }
  }
  return u;
}
int main() {
  int m;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    g[u].push_back(v);
    g[v].push_back(u);
  }
  dfs(1, 1);
  all[1] = f[1];
  dfs2(1, 1);
  for (int i = 0; i < m; i++) {
    scanf("%d%d", &a[i], &b[i]);
    if (dep[a[i]] > dep[b[i]]) {
      swap(a[i], b[i]);
    }
    int lca = getLca(a[i], b[i]);
    long long sum = dep[a[i]] + dep[b[i]] - 2 * dep[lca];
    if (lca != a[i]) {
      sum *= sz[a[i]];
      sum *= sz[b[i]];
      sum += f[a[i]] * sz[b[i]];
      sum += f[b[i]] * sz[a[i]];
      printf("%.20f\n", 1.0 + sum * 1.0 / sz[a[i]] / sz[b[i]]);
    } else {
      sum *= sz[b[i]];
      int pos = jump(b[i], dep[b[i]] - dep[a[i]] - 1);
      sum *= (n - sz[pos]);
      sum += (all[a[i]] - f[pos] - sz[pos]) * sz[b[i]];
      sum += f[b[i]] * (n - sz[pos]);
      printf("%.20f\n", 1.0 + sum * 1.0 / sz[b[i]] / (n - sz[pos]));
    }
  }
  return 0;
}
