Codeforces Round 146 (Div. 1)
D
Graph Game
Codeforces
3000
原题
← CE →
翻译中…

In computer science, there is a method called "Divide And Conquer By Node" to solve some hard problems about paths on a tree. Let's desribe how this method works by function:

翻译中…

$*solve*(*t*)$ ($*t*$ is a tree):

翻译中…
  1. Chose a node $*x*$ (it's common to chose weight-center) in tree $*t*$. Let's call this step "Line A".
  2. Deal with all paths that pass $*x*$.
  3. Then delete $*x*$ from tree $*t*$.
  4. After that $*t*$ becomes some subtrees.
  5. Apply $*solve*$ on each subtree.
翻译中…

This ends when $*t*$ has only one node because after deleting it, there's nothing.

翻译中…

Now, WJMZBMR has mistakenly believed that it's ok to chose any node in "Line A". So he'll chose a node at random. To make the situation worse, he thinks a "tree" should have the same number of edges and nodes! So this procedure becomes like that.

翻译中…

Let's define the variable $*totalCost*$. Initially the value of $*totalCost*$ equal to $0$. So, $*solve*(*t*)$ (now $*t*$ is a graph):

翻译中…
  1. $*totalCost* = *totalCost* + (*size* *of* *t*)$. The operation "=" means assignment. $(*Size* *of* *t*)$ means the number of nodes in $*t*$.
  2. Choose a node $*x*$ in graph $*t*$ at random (uniformly among all nodes of $*t*$).
  3. Then delete $*x*$ from graph $*t*$.
  4. After that $*t*$ becomes some connected components.
  5. Apply $*solve*$ on each component.
翻译中…

He'll apply $*solve*$ on a connected graph with $*n*$ nodes and $*n*$ edges. He thinks it will work quickly, but it's very slow. So he wants to know the expectation of $*totalCost*$ of this procedure. Can you help him?

翻译中…

Input

翻译中…

The first line contains an integer $*n*$ ($3 ≤ *n* ≤ 3000$) — the number of nodes and edges in the graph. Each of the next $*n*$ lines contains two space-separated integers $*a*_{*i*}, *b*_{*i*}$ $(0 ≤ *a*_{*i*}, *b*_{*i*} ≤ *n* - 1)$ indicating an edge between nodes $*a*_{*i*}$ and $*b*_{*i*}$.

翻译中…

Consider that the graph nodes are numbered from $0$ to $(*n* - 1)$. It's guaranteed that there are no self-loops, no multiple edges in that graph. It's guaranteed that the graph is connected.

翻译中…

Output

翻译中…

Print a single real number — the expectation of $*totalCost*$. Your answer will be considered correct if its absolute or relative error does not exceed $10^{ - 6}$.

翻译中…

Note

翻译中…

Consider the second example. No matter what we choose first, the $*totalCost*$ will always be $3 + 2 + 1 = 6$.

翻译中…

样例

Input #1
5
3 4
2 3
2 4
0 4
1 2
Output #1
13.166666666666666
InputCopy OutputCopy
Input #2
3
0 1
1 2
0 2
Output #2
6.000000000000000
InputCopy OutputCopy
Input #3
5
0 1
1 2
2 0
3 0
4 1
Output #3
13.166666666666666
InputCopy OutputCopy
题目信息
题号
235D
时间限制
2 s
内存限制
256 MB
标签
图论

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。