#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 2e4 + 5;
int n, m;
vector<int> adj[N];
bool vis[N];
int num_cc; // Số thành phần liên thông
int cnt[N]; // cnt[i] = Số đỉnh có trong thành phần liên thông thứ i
int root[N]; // root[i] = Nút gốc của cây dfs của thành phần liên thông thứ i
void dfs1(int u) {
vis[u] = true;
cnt[num_cc]++;
for (int v : adj[u]) {
if (!vis[v]) dfs1(v);
}
}
// Do ban đầu có thể có nhiều thành phần liên thông nên ta sẽ đi tính đáp án cho từng thành phần liên thông
// f(X) = Số cặp (a, b) sao cho mọi đường đi từ a đến b bắt buộc phải đi qua X
// Cách đếm tương tự với bài WEATHER nhưng phức tạp hơn do khi bỏ một đỉnh thì có thể bị tách ra nhiều thành phần liên thông
// Với mỗi đỉnh v sao cho v là con của X trên cây dfs, nếu low[v] >= tin[X]
// thì sau khi bỏ đỉnh X, cây con gốc v sẽ bị tách ra riêng một thành phần liên thông
// Lưu ý ở phần công thức tính để tránh bị đếm lặp
ll ans;
int tin[N], low[N], timer;
int sz[N];
void dfs2(int i, int u, int p) {
tin[u] = low[u] = ++timer;
sz[u] = 1;
int tot = 0;
for (int v : adj[u]) {
if (v == p) continue;
if (!tin[v]) {
dfs2(i, v, u);
low[u] = min(low[u], low[v]);
sz[u] += sz[v];
if (low[v] >= tin[u]) {
ans += 1ll * sz[v] * (cnt[i] - sz[v] - tot - 1);
tot += sz[v];
}
}
else {
low[u] = min(low[u], tin[v]);
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
num_cc = 0;
for (int u = 1; u <= n; u++) {
if (!vis[u]) {
num_cc++;
root[num_cc] = u;
dfs1(u);
}
}
ans = 0;
timer = 0;
for (int i = 1; i <= num_cc; i++) {
dfs2(i, root[i], -1);
}
cout << fixed << setprecision(9) << (double)ans / n << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAyZTQgKyA1OyAKCmludCBuLCBtOyAKdmVjdG9yPGludD4gYWRqW05dOwoKYm9vbCB2aXNbTl07CmludCBudW1fY2M7IC8vIFPhu5EgdGjDoG5oIHBo4bqnbiBsacOqbiB0aMO0bmcgCmludCBjbnRbTl07IC8vIGNudFtpXSA9IFPhu5EgxJHhu4luaCBjw7MgdHJvbmcgdGjDoG5oIHBo4bqnbiBsacOqbiB0aMO0bmcgdGjhu6kgaQppbnQgcm9vdFtOXTsgLy8gcm9vdFtpXSA9IE7DunQgZ+G7kWMgY+G7p2EgY8OieSBkZnMgY+G7p2EgdGjDoG5oIHBo4bqnbiBsacOqbiB0aMO0bmcgdGjhu6kgaQoKdm9pZCBkZnMxKGludCB1KSB7Cgl2aXNbdV0gPSB0cnVlOyAgCgljbnRbbnVtX2NjXSsrOyAKCWZvciAoaW50IHYgOiBhZGpbdV0pIHsKCQlpZiAoIXZpc1t2XSkgZGZzMSh2KTsgCgl9Cn0KCi8vIERvIGJhbiDEkeG6p3UgY8OzIHRo4buDIGPDsyBuaGnhu4F1IHRow6BuaCBwaOG6p24gbGnDqm4gdGjDtG5nIG7Dqm4gdGEgc+G6vSDEkWkgdMOtbmggxJHDoXAgw6FuIGNobyB04burbmcgdGjDoG5oIHBo4bqnbiBsacOqbiB0aMO0bmcKLy8gZihYKSA9IFPhu5EgY+G6t3AgKGEsIGIpIHNhbyBjaG8gbeG7jWkgxJHGsOG7nW5nIMSRaSB04burIGEgxJHhur9uIGIgYuG6r3QgYnXhu5ljIHBo4bqjaSDEkWkgcXVhIFgKLy8gQ8OhY2ggxJHhur9tIHTGsMahbmcgdOG7sSB24bubaSBiw6BpIFdFQVRIRVIgbmjGsG5nIHBo4bupYyB04bqhcCBoxqFuIGRvIGtoaSBi4buPIG3hu5l0IMSR4buJbmggdGjDrCBjw7MgdGjhu4MgYuG7iyB0w6FjaCByYSBuaGnhu4F1IHRow6BuaCBwaOG6p24gbGnDqm4gdGjDtG5nCi8vIFbhu5tpIG3hu5dpIMSR4buJbmggdiBzYW8gY2hvIHYgbMOgIGNvbiBj4bunYSBYIHRyw6puIGPDonkgZGZzLCBu4bq/dSBsb3dbdl0gPj0gdGluW1hdCi8vIHRow6wgc2F1IGtoaSBi4buPIMSR4buJbmggWCwgY8OieSBjb24gZ+G7kWMgdiBz4bq9IGLhu4sgdMOhY2ggcmEgcmnDqm5nIG3hu5l0IHRow6BuaCBwaOG6p24gbGnDqm4gdGjDtG5nCi8vIEzGsHUgw70g4bufIHBo4bqnbiBjw7RuZyB0aOG7qWMgdMOtbmggxJHhu4MgdHLDoW5oIGLhu4sgxJHhur9tIGzhurdwCmxsIGFuczsgIAppbnQgdGluW05dLCBsb3dbTl0sIHRpbWVyOwppbnQgc3pbTl07Cgp2b2lkIGRmczIoaW50IGksIGludCB1LCBpbnQgcCkgewoJdGluW3VdID0gbG93W3VdID0gKyt0aW1lcjsgCglzelt1XSA9IDE7ICAKCWludCB0b3QgPSAwOyAgCgoJZm9yIChpbnQgdiA6IGFkalt1XSkgewoJCWlmICh2ID09IHApIGNvbnRpbnVlOyAKCQlpZiAoIXRpblt2XSkgewoJCQlkZnMyKGksIHYsIHUpOyAKCQkJbG93W3VdID0gbWluKGxvd1t1XSwgbG93W3ZdKTsgCgkJCXN6W3VdICs9IHN6W3ZdOwoJCQlpZiAobG93W3ZdID49IHRpblt1XSkgewoJCQkJYW5zICs9IDFsbCAqIHN6W3ZdICogKGNudFtpXSAtIHN6W3ZdIC0gdG90IC0gMSk7CgkJCQl0b3QgKz0gc3pbdl07CgkJCX0KCQl9CgkJZWxzZSB7CgkJCWxvd1t1XSA9IG1pbihsb3dbdV0sIHRpblt2XSk7CgkJfQoJfQp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbiA+PiBtOyAKCWZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CgkJaW50IHUsIHY7IAoJCWNpbiA+PiB1ID4+IHY7IAoJCWFkalt1XS5wdXNoX2JhY2sodik7IAoJCWFkalt2XS5wdXNoX2JhY2sodSk7IAoJfQoKCW51bV9jYyA9IDA7ICAKCWZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgewoJCWlmICghdmlzW3VdKSB7CgkJCW51bV9jYysrOyAKCQkJcm9vdFtudW1fY2NdID0gdTsgIAoJCQlkZnMxKHUpOyAKCQl9Cgl9CgoJYW5zID0gMDsgIAoJdGltZXIgPSAwOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbnVtX2NjOyBpKyspIHsKCQlkZnMyKGksIHJvb3RbaV0sIC0xKTsgCgl9CgoJY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oOSkgPDwgKGRvdWJsZSlhbnMgLyBuIDw8ICdcbic7Cn0K