#include <bits/stdc++.h>
using namespace std;
long long dep[100010], dis[100010], size[100010], sumd[100010], sumf[100010];
int f[100010][20], ecnt, n, m;
long long cnt, sum;
struct edge {
  edge *next;
  int v;
} * head[100010], E[100010 << 2];
void addedge(int u, int v) {
  edge *p = &E[++ecnt];
  p->v = v;
  p->next = head[u];
  head[u] = p;
}
void dfs(int x, int fx) {
  dep[x] = dep[fx] + 1;
  size[x] = 1;
  f[x][0] = fx;
  for (edge *p = head[x]; p; p = p->next)
    if (p->v != fx) {
      dis[p->v] = dis[x] + 1;
      dfs(p->v, x);
      sumd[x] += size[p->v] + sumd[p->v];
      size[x] += size[p->v];
    }
}
void dfs1(int x, int fx) {
  for (edge *p = head[x]; p; p = p->next)
    if (p->v != fx) {
      sumf[p->v] = (sumf[x] + sumd[x] - sumd[p->v] - size[p->v]) +
                   (size[1] - size[p->v]);
      dfs1(p->v, x);
    }
}
void lcainit() {
  for (int j = 1; j <= 18; j++)
    for (int i = 1; i <= n; i++)
      if (dep[i] >= (1 << j)) f[i][j] = f[f[i][j - 1]][j - 1];
}
pair<int, int> getlca(int x, int y) {
  if (dep[x] > dep[y]) swap(x, y);
  int h = dep[y] - dep[x];
  int yy = y;
  for (int j = 0; (1 << j) <= h; j++)
    if (h & (1 << j)) y = f[y][j];
  if (x == y) {
    h--;
    for (int j = 0; (1 << j) <= h; j++)
      if (h & (1 << j)) yy = f[yy][j];
    return make_pair(yy, 1);
  }
  for (int j = 18; j >= 0; j--)
    if (f[x][j] != f[y][j]) x = f[x][j], y = f[y][j];
  return make_pair(f[x][0], 0);
}
int main() {
  scanf("%d%d", &n, &m);
  int u, v;
  for (int i = 1; i < n; i++) {
    scanf("%d%d", &u, &v);
    addedge(u, v);
    addedge(v, u);
  }
  dfs(1, 0);
  dfs1(1, 0);
  lcainit();
  for (int i = 1; i <= m; i++) {
    scanf("%d %d", &u, &v);
    pair<int, int> ai = getlca(u, v);
    int fa = ai.first;
    int is = ai.second;
    if (is) {
      long long d = dis[u] + dis[v] - dis[f[fa][0]] * 2;
      if (dep[u] > dep[v]) swap(u, v);
      cnt = (size[1] - size[fa]) * size[v];
      sum = cnt * (d + 1) + (sumf[fa] - size[1] + size[fa]) * size[v] +
            (size[1] - size[fa]) * sumd[v];
    } else {
      long long d = dis[u] + dis[v] - dis[fa] * 2;
      sum = size[u] * size[v] * (d + 1) + sumd[u] * size[v] + sumd[v] * size[u];
      cnt = size[u] * size[v];
    }
    printf("%lf\n", 1.0 * sum / cnt);
  }
}
