A8693 | Graph Game
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
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?
$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?
输入格式
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.
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.
输出格式
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}$ .
输入输出样例
输入 #1
5 3 4 2 3 2 4 0 4 1 2
输出 #1
13.166666666666666
输入 #2
3 0 1 1 2 0 2
输出 #2
6.000000000000000
输入 #3
5 0 1 1 2 2 0 3 0 4 1
输出 #3
13.166666666666666
Consider the second example. No matter what we choose first, the $totalCost$ will always be $3+2+1=6$ .
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted