QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 256 MB Total points: 100

#17281. Random Tree Generation

统计

假设函数 $\text{randint}(l,r)$ 独立且均匀地从范围 $[l, r]$ 中返回一个整数。

Bessie 使用以下两个步骤生成一个 $N$ 个顶点的随机标号树 ($2 \le N \le 2\cdot10^5$):

  1. 从标号为 $1$ 到 $N$ 的顶点开始。对于每个从 $2$ 到 $N$ 的 $i$,在顶点 $i$ 和 $\text{randint}(1, i-1)$ 之间添加一条边。
  2. 均匀随机选择一个 $\{1, 2, \ldots, N\}$ 的排列 $p_1,p_2,\dots,p_N$。将每个顶点 $v$ 重命名为 $p_v$。

现在,Farmer John 正在观察最终树的边集,并想知道上述两个步骤的过程生成恰好该边集的树的概率。你能求出这个概率对 $10^9+7$ 取模的结果吗?

输入格式

输入包含 $T$ ($1\le T\le 10$) 组独立测试数据。每组测试数据的格式如下:

第一行包含 $N$。

接下来的 $N-1$ 行包含树的边,每行由两个空格分隔的整数 $u$ 和 $v$ ($1\le u, v\le N$) 组成。保证这些边构成一棵树。

保证所有测试数据的 $N$ 之和不超过 $5\cdot 10^5$。

输出格式

对于每组测试数据,输出概率对 $10^9+7$ 取模的结果,每个结果占一行(注意输出的概率是一个有理数,因此在模 $10^9+7$ 意义下,你需要输出该除法的结果)。

样例

样例输入 1

4
2
2 1
3
1 2
2 3
4
1 2
2 3
2 4
4
1 2
2 3
3 4

样例输出 1

1
333333336
83333334
55555556

概率分别为 $1$、$1/3$、$1/12$、$1/18$。

第一个测试:$N=2$ 时只有一棵树,因此生成它的概率为 $1$。

第二个测试:$N=3$ 时有三棵树,且每棵树被上述过程生成的概率相等。$1/3\equiv 333333336\pmod{10^9+7}$。

子任务

  • 输入 2-3:$N\le 8$
  • 输入 4-9:$N\le 2000$
  • 输入 10-21:无额外限制。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.