#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int n, m, cha[maxn][21], h[maxn];
long long dis[maxn], sc[maxn], dis2[maxn];
vector<int> a[maxn];
bool kt[maxn];
void nhap() {
  cin.tie(NULL);
  ios_base::sync_with_stdio(false);
  cin >> n >> m;
  for (int i = 1; i < n; ++i) {
    int u, v;
    cin >> u >> v;
    a[u].push_back(v);
    a[v].push_back(u);
  }
}
void DFS(int u) {
  kt[u] = true;
  for (int i = 0; i < (int)a[u].size(); ++i) {
    int v = a[u][i];
    if (!kt[v]) {
      cha[v][0] = u;
      for (int j = 1; j <= 20; ++j) cha[v][j] = cha[cha[v][j - 1]][j - 1];
      h[v] = h[u] + 1;
      DFS(v);
      dis[u] += dis[v];
      sc[u] += sc[v];
    }
  }
  dis[u] += sc[u];
  ++sc[u];
}
void DFS2(int u) {
  kt[u] = false;
  for (int i = 0; i < (int)a[u].size(); ++i) {
    int v = a[u][i];
    if (kt[v]) {
      dis2[v] = dis2[u] + (n - sc[v]) - sc[v];
      DFS2(v);
    }
  }
}
int LCA(int u, int v, long long &d) {
  int cl = h[v] - h[u];
  for (int i = 0; i <= 20; ++i)
    if ((cl >> i) & 1) {
      d += (1 << i);
      v = cha[v][i];
    }
  if (u == v) return u;
  for (int i = 20; i >= 0; --i)
    if (cha[u][i] != cha[v][i]) {
      d += (1 << (i + 1));
      u = cha[u][i];
      v = cha[v][i];
    }
  if (u != v) {
    d += 2;
    u = cha[u][0];
    v = cha[v][0];
  }
  return u;
}
int SCU(int u, int v) {
  int cl = h[v] - h[u] - 1;
  for (int i = 0; i <= 20; ++i)
    if ((cl >> i) & 1) {
      v = cha[v][i];
    }
  return v;
}
double xl(int u, int v) {
  long long d = 0;
  if (h[u] > h[v]) swap(u, v);
  int lca = LCA(u, v, d);
  if (lca != u) {
    long long dd = d * sc[u] * sc[v];
    dd += dis[u] * sc[v];
    dd += dis[v] * sc[u];
    dd += sc[u] * sc[v];
    double ans = (double)((double)dd / (double)(sc[u] * sc[v]));
    return ans;
  } else {
    int vv = SCU(u, v);
    int scu = n - sc[vv];
    long long dd = d * scu * sc[v];
    dd += dis[v] * scu;
    dd += (dis2[u] - (dis[vv] + sc[vv])) * sc[v];
    dd += scu * sc[v];
    double ans = (double)((double)dd / (double)(scu * sc[v]));
    return ans;
  }
}
int main() {
  nhap();
  h[1] = 1;
  DFS(1);
  dis2[1] = dis[1];
  DFS2(1);
  for (int i = 1; i <= m; ++i) {
    int u, v;
    cin >> u >> v;
    printf("%.6f\n", xl(u, v));
  }
  return 0;
}
